Переход к шаблону TWIG

У меня проблема, когда я хочу получить $_SESSION['session']; в шаблоне ветви с использованием тонкой микро Framework.

это мой код:

 <!DOCTYPE html> <html> <head> <title>{{ title }} </title> </head> <body> <p> welcome <?php echo $_SESSION['username']; ?> <p> {{ body }} </p> <a href="http://localhost/slim/public_html/logout">logout</a> </body> </html> 

Я не могу получить имя пользователя сеанса с этим кодом.

любое предложение о том, как передать шаблон сессии в twig?

Вы должны регистрировать сессию как глобальную ветку, поэтому она становится доступной в ваших шаблонах.

 //$twig is a \Twig_Environment instance $twig->addGlobal("session", $_SESSION); 

В вашем шаблоне:

 {{ session.username }} 

Я тоже использую Slim и Twig. Мои занятия:

 class twigView extends Slim_View { public function render( $template) { $loader = new Twig_Loader_Filesystem($this->getTemplatesDirectory()); $twig = new Twig_Environment($loader); $twig->addGlobal("session", $_SESSION); return $twig->render($template, $this->data); } } 

Как вы видите, я добавил addGlobals . Теперь он работает так, как должен, и я могу использовать {{session.user_id}} и так далее.

Часть моего index.php:

  require './lib/twigView_class.php'; require_once './lib/Twig/Autoloader.php'; require './lib/Paris/idiorm.php'; require './lib/Paris/paris.php'; Twig_Autoloader::register(); 

Надеюсь, это поможет вам.

Но безопасно ли использовать «глобальный» в Twig?

в файле php:

 $app->get('/your_route_here', function() use ($app) { $app->render('view_for_route.twig', array('session_username' => $_SESSION['username']) );}); 

в файле twig:

 <p> welcome {{ session_username }} </p> 

Вы должны передать значение из вашего PHP-файла в Twig через ассоциативный массив.

Это как я смог добиться этого с помощью Slim Framework ver3

 $container['view'] = function ($container) { ... $view = new Twig($settings['view']['template_path'], $settings['view']['twig']); $view->getEnvironment()->addGlobal('session', $_SESSION); ... return $view; }; 

А затем получить доступ к сеансу в шаблоне Twig, как

 <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <img src="#" class="img-circle">&nbsp;{{ session.username }}<b class="caret"></b> </a>