gpt4 book ai didi

Symfony 2 + Twig 全局变量

转载 作者:行者123 更新时间:2023-12-04 05:41:43 26 4
gpt4 key购买 nike

使用includes更改后,如何获得twig全局变量以保持修改?虽然我得到了“原始设置”,但我想要的输出是“设置@更深”。

应用程序/配置/config.yml

twig:
globals:
testvar: "original setting"

根.html.twig
{% include "MyBundle::levelone.html.twig" %}
{{ testvar }}

levelone.html.twig
{% set testvar = "set @ levelone" %}
{% include "MyBundle::deeper.html.twig" %}

deep.html.twig
{% set testvar = "set @ deeper" %}

最佳答案

有趣的问题,我不知道答案,但没有多少用块和东西鬼混会奏效。我查看了生成的 php 缓存模板文件。当你回显一个变量时,它看起来像:

// {{ testvar }}
echo twig_escape_filter($this->env, $this->getContext($context, "testvar"), "html", null, true);

所以基本上它首先在您的本地上下文中查找 testvar 。如果未找到,则它会在全局上下文中查找。

当您设置 test var 的值时,您会得到:
// {% set testvar = 'level one' }}
$context["testvar"] = "level one";

所以只有本地上下文得到更新。当包含的模板返回时,更改的值消失。

所以默认情况下,至少看起来全局变量真的是只读的。

可以通过扩展来做到这一点。我对内部的了解还不够。

关于Symfony 2 + Twig 全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com