3

当我想$_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

4 回答 4

11

您应该将 session 注册为 twig 全局,以便在您的模板中可以访问它。

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

在您的模板中:

{{ session.username }}
于 2012-05-28T08:23:47.833 回答
3

我也在使用 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 中使用“全局”是否安全?

于 2012-07-18T12:05:11.810 回答
3

这就是我使用 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>

于 2016-06-15T11:40:52.957 回答
2

在 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。

于 2012-07-01T13:53:56.170 回答