当前位置: 首页 > 面试题库 >

从TWIG模板访问会话

洪博艺
2023-03-14
问题内容

我在网上搜索了很多如何$_SESSION从TWIG模板访问全局数组的方法,并发现了以下内容:{{app.session.get('index')}},但是当我调用它时,它返回一个空字符串。我有一个$_SESSION['filter']['accounts']和打电话时,我收到此错误{{app.session.get('filter').accounts}}Item "accounts" for "" does not exist。我做错了什么?


问题答案:

{{app.session}}引用Session对象而不是$_SESSION数组。我不认为该$_SESSION数组是可访问的,除非您将其显式传递给每个Twig模板,或者进行扩展使其可用。

Symfony2是面向对象的,因此您应该使用该Session对象设置会话属性,而不要依赖数组。该Session对象会将这些东西从您那里抽象出来,因此,例如,将会话存储在数据库中比较容易,因为存储会话变量对您而言是隐藏的。

因此,在会话中设置属性,并使用该Session对象在树枝模板中检索值。

// In a controller
$session = $this->get('session');
$session->set('filter', array(
    'accounts' => 'value',
));

// In Twig
{% set filter = app.session.get('filter') %}
{% set account-filter = filter['accounts'] %}

希望这可以帮助。

问候,
马特



 类似资料:
  • 问题内容: 如果我在Django中设置会话变量,例如: 有什么方法可以从模板中访问它,还是必须从视图中检索它,然后将其传递给模板? 询问是因为我想在模板中访问大约10个小会话变量,然后将所有10个从视图传递到模板可能会有些混乱。 (我必须使用会话变量,因为它是HttpResponseRedirect,但是出于我的目的,将变量存储在数据库中是过大的。) 那么-有什么方法可以直接在模板中获取会话变量?

  • 问题内容: 我想知道是否有一种简单的方法可以从Jade模板中访问Express.js的req或会话变量,而无需通过常规响应传递它。 还是这是唯一的方法? 问题答案: 您需要创建一个Express才能使用。 然后在模板内部,您可以使用或其他任何东西。 注意:Express 3中不推荐使用dynamicHelpers

  • 我试图从一个Liferay模板中发出自定义字段的值。 使用管理员界面,我定义了一个名为“org home page”的新组织级自定义字段,默认值为“tom rules”。 我想在portal_normal中发出这个值。虚拟机 我根据一位同事发送的一些帖子和样本,以及我自己的大量实验,拼凑出了这段代码: 不幸的是,Velocity无法解析表达式,并且保持不变。 以下表达式在portal_normal

  • 本文向大家介绍twig模板常用语句实例小结,包括了twig模板常用语句实例小结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了twig模板常用语句。分享给大家供大家参考,具体如下: 最近写的静态页面需要套symfony模板,所以将使用到的twig模板语句做一个总结:希望能帮到初学者。 代码结构如下: 需要注意的是:在%外部不能写HTML注释 本文永久地址:http://blog.it985

  • 问题内容: 我的一个实体中的一个字段是“ datetime”变量。 如何将该字段转换为字符串以在浏览器中呈现? 这是一个代码片段: 这是我的实体类中的变量: 这是我收到的错误消息: 呈现模板期间引发了异常(“可捕获的致命错误:DateTime类的对象无法在… \ app \ cache \ dev \ twig \ 9b \ ad \ 58fd3bb1517632badf1fdc7fa4a8.ph