forItera sobre cada elemento en una secuencia o un mapeo. Por ejemplo, para mostrar una lista de usuarios proporcionada en una variable llamada users:
<h1>Miembros</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
Note
Una secuencia o un mapeo puede ser un array o un objeto que implemente la interfaz Traversable.
Si necesitas iterar sobre una secuencia de números, puedes usar el operador ..:
{% for i in 0..10 %}
* {{ i }}
{% endfor %}
El fragmento de código anterior imprimiría todos los números del 0 al 10.
También puede ser útil con letras:
{% for letter in 'a'..'z' %}
* {{ letter }}
{% endfor %}
El operador .. puede tomar cualquier expresión en ambos lados:
{% for letter in 'a'|upper..'z'|upper %}
* {{ letter }}
{% endfor %}
Tip
Si necesitas un paso diferente de 1, puedes usar la función range en su lugar.
loopDentro de un bloque de bucle for puedes acceder a algunas variables especiales:
| Variable | Descripción |
|---|---|
loop.index |
La iteración actual del bucle. (indexado desde 1) |
loop.index0 |
La iteración actual del bucle. (indexado desde 0) |
loop.revindex |
El número de iteraciones desde el final del bucle (indexado desde 1) |
loop.revindex0 |
El número de iteraciones desde el final del bucle (indexado desde 0) |
loop.first |
Verdadero si es la primera iteración |
loop.last |
Verdadero si es la última iteración |
loop.length |
El número de elementos en la secuencia |
loop.parent |
El contexto padre |
{% for user in users %}
{{ loop.index }} - {{ user.username }}
{% endfor %}
Note
Las variables loop.length, loop.revindex, loop.revindex0 y loop.last solo están disponibles para arrays PHP, u objetos que implementen la interfaz Countable.
elseSi no se realizó ninguna iteración porque la secuencia estaba vacía, puedes renderizar un bloque de reemplazo usando else:
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% else %}
<li><em>no se encontraron usuarios</em></li>
{% endfor %}
</ul>
Por defecto, un bucle itera sobre los valores de la secuencia. Puedes iterar sobre las claves usando el filtro keys:
<h1>Miembros</h1>
<ul>
{% for key in users|keys %}
<li>{{ key }}</li>
{% endfor %}
</ul>
También puedes acceder tanto a las claves como a los valores:
<h1>Miembros</h1>
<ul>
{% for key, user in users %}
<li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}
</ul>
Es posible que desees iterar sobre un subconjunto de valores. Esto se puede lograr usando el filtro slice:
<h1>Top Ten Miembros</h1>
<ul>
{% for user in users|slice(0, 10) %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
Para iterar sobre los caracteres de una cadena, usa el filtro split:
<h1>Caracteres</h1>
<ul>
{% for char in "諺 / ことわざ"|split('') -%}
<li>{{ char }}</li>
{%- endfor %}
</ul>