我正在使用Twig作为我的PHP Web应用程序的模板框架。
我想知道是否有一种快速的方法可以在foreach块中获得许多元素。
这是我的数据:
users=>[
["name"=>"User1"],
["name"=>"User2"],
["name"=>"User3"],
["name"=>"User4"],
["name"=>"User5"],
["name"=>"User6"]
]
这将是一个标准循环(每个项目):
<ul>
{% for user in users %}
<li>{{ user.name }}</li>
{% endfor %}
</ul>
但这是我需要的 n 元素块(在本例中 n = 3 )
<ul>
<li>User1</li>
<li>User2</li>
<li>User3</li>
</ul>
<ul>
<li>User4</li>
<li>User5</li>
<li>User6</li>
</ul>
在Twig中存在一种快速的方法,或者我应该用另一个子阵列层以不同的方式准备数据?
答案 0 :(得分:12)
您似乎需要使用batch
过滤器:
{% set items = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] %}
<table>
{% for row in items|batch(3, 'No item') %}
<tr>
{% for column in row %}
<td>{{ column }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
它将呈现:
<table>
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
<tr>
<td>d</td>
<td>e</td>
<td>f</td>
</tr>
<tr>
<td>g</td>
<td>No item</td>
<td>No item</td>
</tr>
</table>