2015-03-11 2 views
3

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

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

Но это то, что мне нужно в блоке п элементов (в этом пример п = 3)

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

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

ответ

6

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

Источник: Twig Documentation

+0

Спасибо. Пакет был моим ответом! – Tobia

Смежные вопросы