twig for loop将每2个元素放入一个新容器中

时间:2015-07-02 11:47:30

标签: html for-loop twig

我有这个循环:

{% for div in myHandleHere %}

    <div> {{ block.text }} </div>

{% endfor %}

实际上输出的内容如下:

<div> one </div>
<div> two </div>
<div> three </div>
<div> ... </div>

我想要的是,每2个div,将它们放在一个新的容器中,如:

<div class="container">
    <div> one </div>
    <div> two </div>
</div>
<div class="container">
    <div> three </div>
    <div> ... </div>
</div>

请帮忙

2 个答案:

答案 0 :(得分:7)

在这种情况下,最好的解决方案是使用允许处理组中元素的优秀batch filter

{{1}}

答案 1 :(得分:2)

您要做的是要么计算您所在的行数,要么具有嵌套循环。方便地,Twig有几个我们可以使用的内置loop variables

这样的事情:

{% for div in myHandleHere %}
    {% if loop.index is odd %}
        <div class="container">
    {% endif %}

    <div> {{ block.text }} </div>

    {% if loop.index is even or loop.last %}
        </div>
    {% endif %}
{% endfor %}

遍历所有块。在每次迭代时,如果循环计数器是奇数,即块1,3,5等,则启动新的<div class="container">

如果循环计数器是偶数,即块2,4,6等,则关闭</div>

此外,如果你在最后一个街区,请确保并关闭父div,例如如果您只有奇数个块,则需要输出HTML,如:

<div class="container">
    <div> one </div>
    <div> two </div>
</div>
<div class="container">
    <div> three </div>
    <div> four </div>
</div>
<div class="container">
    <div> five</div>  
</div>