entityManager = $entityManager; $this->templateRepository = $entityManager->getRepository('TemplateBundle:Template'); } /** * @param string $name * * @return Template */ public function getTemplateByName($name) { return $this->templateRepository->findOneByName($name); } /** * @param string $name * @param array $params * @param string $filename * * @return string */ public function renderTemplate($name, $params = array(), $filename = null) { $content = null; $template = $this->getTemplateByName($name); $params = array('em' => $this->entityManager) + $params; if (!is_null($template)) { $content = $this->render($template, $params); var_dump($content); $filename = $this->createFile($content, $filename); }else{ throw new \Exception ("Template $name not found"); } return $filename; } /** * @param Template $template * @param array $params * * @return string */ public function render($template, $params = array()) { $loader = new \Twig_Loader_Array(array( $template->getName() => $template->getContent() )); $twig = new \Twig_Environment($loader, array( 'cache' => false, )); return $twig->render($template->getName(), $params); } /** * @param string $content * @param string $filename * * @return string */ public function createFile($content, $filename = null) { if (is_null($filename)) { $filename = self::TEMPLATE_PATH . DIRECTORY_SEPARATOR . uniqid(); } $pieces = explode(DIRECTORY_SEPARATOR, $filename); $file = array_pop($pieces); $dir = DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $pieces); if (!file_exists($dir)) { mkdir($dir, 0777, true); } file_put_contents($dir . DIRECTORY_SEPARATOR . $file, $content); return $filename; } }