Intento usar un bucle simple, en mi código real, este bucle es más complejo y necesito break
esta iteración como:
{% for post in posts %}
{% if post.id == 10 %}
{# break #}
{% endif %}
<h2>{{ post.heading }}</h2>
{% endfor %}
¿Cómo puedo utilizar el comportamiento del break
o continue
de estructuras de control de PHP en la ramita?
first
filtro twigset break = true
a continuación se ejecutará a menos que lo ponga en unaelse
declaración. Ver twigfiddle.com/euio5wset break = true
al final . Pero sí, depende de su código, así que gracias por mencionarlo para aclararloDe los documentos TWIG docs :
Pero aún:
Ejemplo 1 (para grandes listas puede filtrar los mensajes usando rebanada ,
slice(start, length)
):Ejemplo 2:
Incluso puede usar sus propios filtros TWIG para condiciones más complejas, como:
fuente
{% for post in posts|slice(0,10) %}
Unlike in PHP, it's not possible to break or continue in a loop.
cuando leí los documentos. Pero creo quebreak
ycontinue
es una buena característica, que debería agregarfor
debería ser rompible después del primer golpe. La respuesta de @VictorBocharsky es correcta{% for post in posts|slice(0,10) %}
para listas enormes. Vea mi primer comentario. También actualicé mi respuesta.Una forma de poder usar
{% break %}
o{% continue %}
es escribirTokenParser
s para ellos.Lo hice por el
{% break %}
token en el siguiente código. Puede, sin muchas modificaciones, hacer lo mismo con el{% continue %}
.AppBundle \ Twig \ AppExtension.php :
AppBundle \ Twig \ BreakToken.php :
AppBundle \ Twig \ BreakNode.php :
Luego, simplemente puede usar
{% break %}
para salir de bucles como este:Para ir aún más lejos, puede escribir analizadores de tokens para
{% continue X %}
y{% break X %}
(donde X es un número entero> = 1) para salir / continuar múltiples bucles como en PHP .fuente
squirrelphp/twig-php-syntax
biblioteca ofrece{% break %}
,{% break n %}
y{% continue %}
fichas.Del comentario de @NHG - funciona perfectamente
fuente
He encontrado una buena solución para continuar (me encanta el ejemplo de descanso anterior). Aquí no quiero incluir "agencia". En PHP, "continuaría" pero en twig, se me ocurrió una alternativa:
O simplemente lo omito si no cumple con mis criterios:
fuente