doushenjia8514 2018-04-26 05:54
浏览 134
已采纳

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

I have a situation where I need to include a template file inside another template and output it in a for loop. The problem I am having though, is that it's outputting to a container and I only need the container to render once, but I need the included template to render on all iterations of the loop.

{% 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 %}

As you can see, the {% if loop.first %} prevents the container from repeating. But I need data.html.twig to loop on every iteration and append the HTML to the data_details variable but the variable only contains the last iteration. I am not that knowledgeable with Twig so maybe I am going about this the wrong way. The documentation says if you wrap something in a set it will "capture" the output but that isn't happening for some reason.

  • 写回答

1条回答 默认 最新

  • dongpai2468 2018-04-26 08:01
    关注

    You're close, the iteration does overwrite the already set variable. To append to the already set variable , you can repeat/output the variable in the wrap to recapture/concatenate it

      {% set data_details %}
        {{ data_details | default('') }}
        {{ include('data.html.twig') }}
      {% endset %}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?