将twig中的模板文件的输出连接到变量?

时间:2018-04-26 05:54:13

标签: php twig

我的情况是我需要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中包装它会“捕获”输出但是由于某种原因没有发生。

1 个答案:

答案 0 :(得分:1)

您关闭,迭代会覆盖已设置的变量。 要附加到已设置的变量,您可以在包中重复/输出变量以重新捕获/连接它

  {% set data_details %}
    {{ data_details | default('') }}
    {{ include('data.html.twig') }}
  {% endset %}