从包含中使用Twig自定义集变量

Kin*_*724 11 symfony twig

我正在尝试使用一堆自定义设置变量包含一个twig文件,然后使用多个其他模板文件中的变量.类似于包含PHP文件的方式.

我似乎无法访问我的索引文件中include中设置的变量.

有没有办法做到这一点?

示例代码*已编辑

包含的文件:

{# variables.html #}
{% set width = "100" %}
{% set height = "250" %}
Run Code Online (Sandbox Code Playgroud)

模板文件:

{# index.html #} 
{% include 'variables.html' %}
{{ width }}
{{ height }}
Run Code Online (Sandbox Code Playgroud)

预期结果:

100 250
Run Code Online (Sandbox Code Playgroud)

实际结果:

// Nothing gets output
Run Code Online (Sandbox Code Playgroud)

imj*_*red 5

我只是想做和你一样的事情,并提出了以下建议:

创建是snippets.twig为了维护所有这些微型变量。就您而言,您可以将其称为variables.twig. 在此文件中,我使用了一个不带任何参数的。我正在创建格式化的条目日期标记,我可以在所有模板中使用它,它看起来像这样:

{% macro entry_date() %}
<time datetime="{{post.post_date|date('m-d-Y')}}">{{post.post_date|date('F j, Y')}}</time>
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

请注意,名称声明后的括号是必需的

在我的主布局文件中,layout.twig我通过import语句引用了该宏,因此可以在所有子模板中访问它:

{% import "snippets.twig" as snippets %}
<!doctype html>
...
Run Code Online (Sandbox Code Playgroud)

在我的模板文件中,我现在snippets可以像任何其他变量一样访问并查询它:

{{ snippets.entry_date }}
Run Code Online (Sandbox Code Playgroud)

更新

这似乎无法正确运行代码。如果您只是存储静态内容,那么应该没问题。您还可以将参数传递给宏,所以我想您可以在那里发生一些魔法,但我还没有尝试过。

  • 这仍然是最佳答案吗? (2认同)