[英]How can I define global variables inside a twig template file?
是否可以在 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 代碼時,您只包含來自該代碼的渲染視圖,而不是代碼本身。 因此,設計上不可能以您正在尋找的方式包含一組變量。
從Symfony 4開始,您可以在config/packages/twig.yaml
中設置全局變量。
# config/packages/twig.yaml
twig:
# ...
globals:
ga_tracking: 'UA-xxxxx-x'
似乎您可以在頂級模板中分配全局 READONLY 變量並在所有底層模板中使用它們。 但是你當然不能覆蓋它們。 它涵蓋了我的情況,也許對其他人有用。
base.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 %}
deep.twig
Check top vars very deep inside: <br>
{{ myReadonlyJar.v2 }}
使用SlimFramework
和Twig-View:3.0
您可以使用以下方法Twig::offsetSet
$twig = Twig::create('view/templates');
$twig->offsetSet('globalVar', 'globalVarValue');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.