Передача сеанса в шаблон TWIG
У меня есть проблема, когда я хочу получить $_SESSION['session'];
в шаблоне ветки, используя тонкий микро рамки.
это мой код:
<!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>
я не могу получить имя пользователя сеанса с этим кодом.
Любое предложение, как передать сессию в шаблон веточку?
4 ответа
Вы должны зарегистрировать сессию как глобальную веточку, чтобы она стала доступной в ваших шаблонах.
//$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?
Вот как я смог добиться этого с 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"> {{ session.username }}<b class="caret"></b>
</a>
В php файле:
$app->get('/your_route_here', function() use ($app) {
$app->render('view_for_route.twig', array('session_username' => $_SESSION['username']) );});
в файле ветки:
<p> welcome {{ session_username }} </p>
Вы должны передать значение из вашего PHP-файла в Twig через ассоциативный массив.