首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据现有会话更改Twig内容

根据现有会话更改Twig内容
EN

Stack Overflow用户
提问于 2015-03-17 21:55:58
回答 3查看 180关注 0票数 0

目前我在Symfony web-project上工作。目前,我有一个layout.html.twig文件,它设置一个导航栏,并由任何其他.html.twig文件扩展。

最近我实现了一个用户登录区。现在,我想要动态更改导航栏的内容,这取决于是否登录。因为我不能在.html.twig文件中直接写php代码,所以我不能访问会话变量。

实现这一目标的最佳实践是什么?

提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2015-03-17 22:19:07

首先,通过控制器将会话变量发送到html.twig:

代码语言:javascript
复制
public function mySiteAction(){
  $session = new Session();
  $yourVariable = $session->get('yourVariable');
  return array('sessionValue' => $yourVariable);
}

然后你可以像这样用树枝来访问它: mySite.html.twig

代码语言:javascript
复制
<html>
    <head>
    </head>
    <body>
        <div id="navbar">
        {{ sessionValue }}
        </div>
    </body>
</html>

该过程的快捷方式是

代码语言:javascript
复制
{% set element = app.session.get('elem_name') %}

有关更多信息,请参阅Twig Documentation此解决方案的前提是,您首先登录,然后转到只能登录用户的页面。

票数 0
EN

Stack Overflow用户

发布于 2015-03-17 22:21:03

在twig中,可以检查用户状态,如下所示

代码语言:javascript
复制
{% if app.user %}
  <div class="loggedInNav"></div>
{% else %}
  <div class="notLoggedInNav"></div>
{% endif %}
票数 0
EN

Stack Overflow用户

发布于 2015-03-17 22:23:25

您可以像Rubinum那样从控制器传递一个特定的变量,也可以像这样直接在twig中访问用户。

代码语言:javascript
复制
{% if app.user %}
   # user is logged in
{% else %}
   # user is not logged in
{% endif %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29100939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档