for
Перебирайте каждый элемент в последовательности. Например, чтобы отобразить список пользователей, предоставленных в переменной, называемой users:
<h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
Примечание
Последовательность может быть либо массивом, либо объектом, реализующим интерфейс Traversable.
Если вам нужно итерироваться по последовательности чисел, вы можете использовать оператор ..:
{% for i in 0..10 %}
* {{ i }}
{% endfor %}
Вышеприведенный фрагмент кода выведет все числа от 0 до 10.
Он также может быть полезен с буквами:
{% for letter in 'a'..'z' %}
* {{ letter }}
{% endfor %}
Оператор .. может принимать любое выражение с обеих сторон:
{% for letter in 'a'|upper..'z'|upper %}
* {{ letter }}
{% endfor %}
Переменная loop
Внутри блока цикла for вы можете получить доступ к некоторым специальным переменным:
| Переменная | Описание |
|---|---|
loop.index | Текущая итерация цикла. (Индексируется с 1) |
loop.index0 | Текущая итерация цикла. (Индексируется с 0) |
loop.revindex | Количество итераций с конца цикла (индексируется с 1) |
loop.revindex0 | Количество итераций с конца цикла (индексируется с 0) |
loop.first | Истина, если это первая итерация |
loop.last | Истина, если это последняя итерация |
loop.length | Количество элементов в последовательности |
loop.parent | Родительский контекст |
{% for user in users %}
{{ loop.index }} - {{ user.username }}
{% endfor %}
Примечание
Переменные loop.length, loop.revindex, loop.revindex0, и loop.last доступны только для PHP-массивов или объектов, реализующих интерфейс Countable.
Оператор else
Если итерация не произошла из-за пустой последовательности, вы можете отобразить заменяющий блок, используя else:
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% else %}
<li><em>no user found</em></li>
{% endfor %}
</ul>
Итерация по ключам
По умолчанию цикл перебирает значения последовательности. Вы можете перебирать ключи, используя фильтр keys:
<h1>Members</h1>
<ul>
{% for key in users|keys %}
<li>{{ key }}</li>
{% endfor %}
</ul>
Итерация по ключам и значениям
Вы также можете получить доступ к ключам и значениям:
<h1>Members</h1>
<ul>
{% for key, user in users %}
<li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}
</ul>
Итерация по подмножеству
Возможно, вам нужно итерироваться по подмножеству значений. Это можно сделать, используя фильтр slice:
<h1>Top Ten Members</h1>
<ul>
{% for user in users|slice(0, 10) %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
© 2009–2018 by the Twig Team
Licensed under the three clause BSD license.
The Twig logo is © 2010–2020 Symfony
https://twig.symfony.com/doc/3.x/tags/for.html