在循环中,Twig嵌入块无法正常工作?

时间:2016-08-04 16:22:45

标签: twig

我需要在我的页面中放置一个树枝模板,并在其中放置另一个树枝模板。

在page.twig中:

{% embed "parent.twig" %}
  {% block something %}
    {% include "child.twig" %}
  {% endblock %}
{% endembed %}

在parent.twig中:

{% set array  = ['', '', '']
%}
<div class="parent">
    {% for i in array %}
      <div class="parent__item">
        {% block cardBoard %}
        {% endblock %}
      </div>
    {% endfor %}
</div>

问题是该块在循环内时不起作用。我可以编辑所有我喜欢的page.twig,但我宁愿不更改parent.twig,如果可能,因为它被其他应用程序使用。

1 个答案:

答案 0 :(得分:2)

为什么要在for循环中放置一个块?您不能使用相同名称定义2个块。 在您的情况下,它会尝试将其放入您的模板中3次:

  <div class="parent__item">
    {% block cardBoard %}
    {% endblock %}
  </div>

这将创建500服务器错误: 块'cardBoard'已被定义为''in:parent.twig at line''。“

如果你真的想要根据数组中的值来获取内容,请将块打开和关闭放在for循环之外。 像这样举例如:

{% set array  = ['', '', '']%}
<div class="parent__item">
    {% block cardBoards %}
       {% for i in array %}
           <div class="cardBoard{{ i }}>
           </div>
       {% endfor %}
    {% endblock %}
</div>