在Symfony中,我习惯在任何视图中使用{{ app.user.username }}
。我能在Slim做这样的事吗?
目前我正在将用户添加到$container['user']
并将其传递到view->render($response, 'index.html.twig', ['user' => $this->user])
的每个视图中。
换句话说,我可以将user
添加为Twig的全局变量吗?我看到了许多类似的问题,但没有找到我能够使用的解决方案。
答案 0 :(得分:5)
$container['view']->addGlobal('user', $this->user);
怎么样?
答案 1 :(得分:1)
我用它来公开 {{current_path}} 变量中的路径:
$container = $app->getContainer();
$container["view"] = function ($container) use ($menu) {
$view = new \Slim\Views\Twig("../templates");
$basePath = rtrim(str_ireplace("index.php", "", $container["request"]->getUri()->getBasePath()), "/");
$view->addExtension(new Slim\Views\TwigExtension($container["router"], $basePath));
$view->getEnvironment()->addGlobal("current_path", $container["request"]->getUri()->getPath());
return $view;
};
这遵循Templates文档中描述的方法。
答案 2 :(得分:0)
我通过将此行添加到我的依赖项(在我注册Twig之后)
来实现此功能$container['view']['user'] = $_SESSION['user'];
这很有效。我可以使用{{ user.username }}
获取用户名。我不知道以这种方式进行会话是多么安全,但它确实有效。