目前我在Symfony web-project上工作。目前,我有一个layout.html.twig文件,它设置一个导航栏,并由任何其他.html.twig文件扩展。
最近我实现了一个用户登录区。现在,我想要动态更改导航栏的内容,这取决于是否登录。因为我不能在.html.twig文件中直接写php代码,所以我不能访问会话变量。
实现这一目标的最佳实践是什么?
提前感谢!
发布于 2015-03-17 22:19:07
首先,通过控制器将会话变量发送到html.twig:
public function mySiteAction(){
$session = new Session();
$yourVariable = $session->get('yourVariable');
return array('sessionValue' => $yourVariable);
}然后你可以像这样用树枝来访问它: mySite.html.twig
<html>
<head>
</head>
<body>
<div id="navbar">
{{ sessionValue }}
</div>
</body>
</html>该过程的快捷方式是
{% set element = app.session.get('elem_name') %}有关更多信息,请参阅Twig Documentation此解决方案的前提是,您首先登录,然后转到只能登录用户的页面。
发布于 2015-03-17 22:21:03
在twig中,可以检查用户状态,如下所示
{% if app.user %}
<div class="loggedInNav"></div>
{% else %}
<div class="notLoggedInNav"></div>
{% endif %}发布于 2015-03-17 22:23:25
您可以像Rubinum那样从控制器传递一个特定的变量,也可以像这样直接在twig中访问用户。
{% if app.user %}
# user is logged in
{% else %}
# user is not logged in
{% endif %}https://stackoverflow.com/questions/29100939
复制相似问题