У меня проблема, когда я хочу получить $_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"> {{ session.username }}<b class="caret"></b> </a>