예제 #1
0
파일: App.php 프로젝트: rotten77/simpleblog
 /**
  * Template rendering
  *
  * Uses Twig
  * 
  * @param  string $template Template file name
  * @param  array $data Data passed to template
  * @return void
  */
 public function renderTemplate($template, array $data = array())
 {
     require_once __DIR__ . '/../../vendor/Twig/Autoloader.php';
     Twig_Autoloader::register();
     $templateFolder = __DIR__ . '/../view/';
     $teamplateFile = $templateFolder . $template . ".html.twig";
     $loader = new Twig_Loader_Filesystem($templateFolder);
     $twig = new Twig_Environment($loader, array('cache' => __DIR__ . '/../../cache/', 'debug' => isset($_SERVER['SERVER_NAME']) && preg_match("/localhost/", $_SERVER['SERVER_NAME']) ? true : false));
     // Add link generator $this->linkGenerator() for templates
     $twig = new Twig_Environment($loader);
     $linkGenerator = new Twig_SimpleFunction('link', array($this, "linkGenerator"));
     $twig->addFunction($linkGenerator);
     // Root for links
     $twig->addGlobal('LINK_BASE', LINK_BASE);
     // Category list
     $twig->addGlobal('categoryList', $this->db->category());
     // Flash messages
     $twig->addGlobal('messages', $_SESSION['messages']);
     // User
     $auth = new Auth($this->db);
     if ($auth->isLogged()) {
         $twig->addGlobal('authUser', $auth->userInfo());
     }
     if (!is_file($teamplateFile) && $template == '404') {
         die('404: Not found');
     }
     if (!is_file($teamplateFile)) {
         $this->notFound();
     }
     try {
         // render template
         echo $twig->render($template . ".html.twig", $data);
     } catch (Exception $e) {
         die(__LINE__ . " :: " . $e->getMessage());
     }
     // reset messages
     $_SESSION['messages'] = array();
 }