说我有以下headline.twig
部分:
<h2>{{ headline }}</h2>
我想把它包含在两个地方,一次是:
<% for article in teasers %>
{{ include('headline.twig') }}
<% endfor %>
然后简单地说:
{{ include('headline.twig') }}
是否可以传递include
标记或其上下文功能,以便包含&#34;知道&#34;在第一个实例中,headline
变量实际上是article.headline
?
我正在寻找一种系统的方法来做到这一点,而不是像
那样{{ include('headline.twig', {headline: article.headline}) }}
答案 0 :(得分:1)
默认情况下,整个上下文会传递给包含的模板。
因此它适用于headline.twig
:
<h2>{{ article.headline }}</h2>
然后在主模板中,您只需致电:
{% include('headline.twig') %}
但必须在调用article
时定义include
变量。
答案 1 :(得分:1)
如果您希望headline
在所有情况下都位于所包含文件的主要上下文中,您可以执行以下操作:
{% for article in teasers %}
{% set headline = article.headline %}
{{ include('headline.twig') }}
{% endfor %}
但如果你以这种方式重新设置它,那么这将覆盖当前上下文中的任何现有headline
变量(并且风险重复teasers.article.headline
的最后一次迭代的2倍)。 / p>
如果您想保留当前上下文并覆盖headline
变量,最佳解决方案是使用merge
过滤器:
{% for article in teasers %}
{{ include('headline.twig', _context|merge({headline: article.headline})) }}
{% endfor %}