目前我正在研究Symfony网络项目。目前,我有一个layout.html.twig
文件,用于设置导航栏并通过任何其他.html.twig
文件进行扩展。
最近我实现了一个用户登录区域。现在我想动态更改该导航栏的内容,具体取决于是否登录。由于我无法在.html.twig
文件中直接编写php代码,因此无法访问会话变量。
实现这一目标的最佳做法是什么?
提前致谢!
答案 0 :(得分:0)
首先通过控制器将会话变量发送到你的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') %}
了解更多信息 - &gt;见Twig Documentation 此解决方案预先假定您首先登录并转到仅登录用户的页面。
答案 1 :(得分:0)
在树枝中你可以检查用户状态,如
{% if app.user %}
<div class="loggedInNav"></div>
{% else %}
<div class="notLoggedInNav"></div>
{% endif %}
答案 2 :(得分:0)
您可以像Rubinum那样从控制器传递特定变量,或者您可以直接在这样的树枝中访问用户。
{% if app.user %}
# user is logged in
{% else %}
# user is not logged in
{% endif %}