从 TWIG 模板访问会话

2022-08-30 09:03:20

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


答案 1

{{app.session}}引用对象而不是数组。我不认为数组是可访问的,除非你明确地将其传递给每个Twig模板,或者你做了一个扩展,使它可用。Session$_SESSION$_SESSION

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

因此,在会话中设置属性,并使用对象检索 twig 模板中的值。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'] %}

希望这有帮助。

问候,
马特


答案 2

设置树枝

$twig = new Twig_Environment(...);    
$twig->addGlobal('session', $_SESSION);

然后在模板中访问会话值,例如

$_SESSION['username'] in php file Will be equivalent to {{ session.username }} in your twig template

推荐