如何在树枝模板文件中定义全局变量?使用 Symfony 配置使用 Twig_Environment::addGlobal使用树枝模板
2022-08-30 23:04:30
是否可以在twig文件中设置全局变量,以便我可以从其他文件,宏和块访问该变量。
例如,我想要有文件,并在其中设置我的变量,然后我可以将其包含在其他模板中。variables.twig
我知道可以从框架(例如Symfony)设置全局变量,但我想要一个仅使用twig功能的解决方案。
是否可以在twig文件中设置全局变量,以便我可以从其他文件,宏和块访问该变量。
例如,我想要有文件,并在其中设置我的变量,然后我可以将其包含在其他模板中。variables.twig
我知道可以从框架(例如Symfony)设置全局变量,但我想要一个仅使用twig功能的解决方案。
如果您使用的是 Symfony2+,则可以在文件中设置全局变量:config.yml
# app/config/config.yml
twig:
# ...
globals:
myStuff: %someParam%
然后在应用程序中的任何位置使用。{{ myStuff }}
如果您在另一个项目中使用 Twig,则可以直接在环境中设置全局变量:
$twig = new Twig_Environment($loader);
$twig->addGlobal('myStuff', $someVariable);
然后在应用程序中的任何位置使用。{{ myStuff }}
当您包含一段 Twig 代码时,您只包含来自该代码的呈现视图,而不是代码本身。因此,根据设计,不可能像您正在寻找的那样包含一组变量。
您似乎可以在顶级模板中分配全局只读变量,并在所有基础模板中使用它们。但你当然不能覆盖它们。它涵盖了我的情况,也许对其他人有用。
基.html.twig
<!DOCTYPE html>
{# assign global vars here #}
{% set myReadonlyJar = your_custom_ext_twig_function() %}
<html>
<body>
{% block body %}{% endblock %}
</body>
</html>
my_page.twig
{% extends 'stack/base.html.twig' %}
{% block body %}
{{ myReadonlyJar.v1 }}
{{ myReadonlyJar.v2 }}
{{ include('stack/deep.twig') }}
{% endblock %}
深枝
Check top vars very deep inside: <br>
{{ myReadonlyJar.v2 }}