每2个元素放入一个新容器中



我有这个循环:

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

请帮助

在这种情况下,最好的解决方案是使用伟大的批处理过滤器,它允许成组处理元素:

{% for pair in myHandleHere|batch(2) %}
    <div class="container">
        {% for element in pair %}
            <div>{{ element }}</div>
        {% endfor %}
    </div>
{% endfor %}

您想要做的是记录您所在的行,或者使用嵌套循环。方便的是,Twig有几个内置的循环变量,我们可以使用。

类似这样的东西:

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

相关内容

最新更新