Цикл Foreach с несколькими элементами в шаблонном движке Twig

Я использую Twig в качестве фреймворка для моего PHP-веб-приложения.

Я хотел бы знать, есть ли быстрый способ получить много элементов в блоке 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 элементы (в этом примере п = 3)

<ul>
<li>User1</li>
<li>User2</li>
<li>User3</li>
</ul>
<ul>
<li>User4</li>
<li>User5</li>
<li>User6</li>
</ul>

Существует быстрый способ сделать это в Twig, или я должен подготовить данные другим способом с еще одним слоем подмассива?

5

Решение

Похоже, вам нужно использовать 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>

Источник: Документация на веточку

11

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]