Twig 如何传递当前上下文以包含在细枝中?

Twig 如何传递当前上下文以包含在细枝中?,twig,Twig,假设我有以下headline.twigpartial: <h2>{{ headline }}</h2> 是否可以将include标记或函数传递给上下文,以便include“知道”首先headline变量实际上是article.headline 我正在寻找一种系统的方法来实现这一点,而不是像这样的方法 {{ include('headline.twig', {headline: article.headline}) }} 默认情况下,整个上下文将传递给包含的模板 因此,

假设我有以下
headline.twig
partial:

<h2>{{ headline }}</h2>
是否可以将
include
标记或函数传递给上下文,以便include“知道”首先
headline
变量实际上是
article.headline

我正在寻找一种系统的方法来实现这一点,而不是像这样的方法

{{ include('headline.twig', {headline: article.headline}) }}

默认情况下,整个上下文将传递给包含的模板

因此,它将在
headline.twig
中工作:

<h2>{{ article.headline }}</h2>

但是
article
变量必须在调用
include

时定义。如果希望
headline
在所有情况下都位于包含文件的主上下文中,可以执行以下操作:

{% for article in teasers %}
  {% set headline = article.headline %}
  {{ include('headline.twig') }}
{% endfor %}
但是,如果您这样设置,这将覆盖当前上下文中任何现有的
headline
变量(并且有可能重复上一次迭代的
triasers.article.headline

如果要保留当前上下文并覆盖
headline
变量,最好的解决方案是使用过滤器:


谢谢,但这并不能真正解决我的问题。你的建议很像做
{{include('headline.twig',{headline:article.headline}}}
,只是方向相反谢谢。我希望有一个比合并过滤器更简单的解决方案(合并过滤器有时会变得非常笨拙),但我想根本没有
<h2>{{ article.headline }}</h2>
{% include('headline.twig') %}
{% for article in teasers %}
  {% set headline = article.headline %}
  {{ include('headline.twig') }}
{% endfor %}
{% for article in teasers %}
  {{ include('headline.twig', _context|merge({headline: article.headline})) }}
{% endfor %}