我有这个循环:
{% 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>
请帮忙
答案 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>