我的情况是我需要include
另一个模板中的模板文件并将其输出到for
循环中。我遇到的问题是,它输出到容器,我只需要容器渲染一次,但我需要包含的模板在循环的所有迭代中呈现。
{% for details in array %}
{% set data_details %}
{{ include('data.html.twig') }}
{% endset %}
<!-- Other HTML needed in the loop -->
{% if loop.first %}
<tr class="table-row">
<td>
{{ data_details | raw }}
</td>
</tr>
{% endif %}
{% endfor %}
如您所见,{% if loop.first %}
阻止容器重复。但我需要data.html.twig
循环每次迭代并将HTML附加到data_details
变量,但变量只包含最后一次迭代。我对Twig知之甚少,所以也许我会以错误的方式解决这个问题。文档说如果你在set
中包装它会“捕获”输出但是由于某种原因没有发生。
答案 0 :(得分:1)
您关闭,迭代会覆盖已设置的变量。 要附加到已设置的变量,您可以在包中重复/输出变量以重新捕获/连接它
{% set data_details %}
{{ data_details | default('') }}
{{ include('data.html.twig') }}
{% endset %}