Ich versuche, eine einfache Schleife zu verwenden. In meinem realen Code ist diese Schleife komplexer und ich muss break
diese Iteration wie folgt ausführen :
{% for post in posts %}
{% if post.id == 10 %}
{# break #}
{% endif %}
<h2>{{ post.heading }}</h2>
{% endfor %}
Wie kann ich das Verhalten von break
oder continue
von PHP-Kontrollstrukturen in Twig verwenden?
first
: twig.sensiolabs.org/doc/filters/first.htmlset break = true
wird , wenn Sie es in einer gestellt werden ausgeführtelse
Aussage. Siehe twigfiddle.com/euio5wset break = true
ganz am Ende setzen . Aber ja, es hängt von Ihrem Code ab, also danke, dass Sie ihn zur Verdeutlichung erwähnt habenAus Dokumenten TWIG- Dokumente :
Aber dennoch:
Beispiel 1 (für riesige Listen können Sie Beiträge mit Filterscheibe ,
slice(start, length)
):Beispiel 2:
Sie können sogar eigene TWIG-Filter für komplexere Bedingungen verwenden, z.
quelle
{% for post in posts|slice(0,10) %}
Unlike in PHP, it's not possible to break or continue in a loop.
als ich die Dokumente gelesen habe. Aber ich denkebreak
undcontinue
ist eine gute Funktion, diefor
sollte nach dem ersten Treffer zerbrechlich sein. @ VictorBocharskys Antwort ist richtig{% for post in posts|slice(0,10) %}
für große Listen verwenden. Siehe meinen ersten Kommentar. Ich habe auch meine Antwort aktualisiert.Eine Möglichkeit , s verwenden
{% break %}
oder{% continue %}
schreiben zu können, besteht darin,TokenParser
s für sie zu schreiben .Ich habe es für das
{% break %}
Token im folgenden Code getan . Sie können ohne große Änderungen das Gleiche für die{% continue %}
.AppBundle \ Twig \ AppExtension.php :
AppBundle \ Twig \ BreakToken.php :
AppBundle \ Twig \ BreakNode.php :
Dann können Sie einfach verwenden
{% break %}
, um Schleifen wie folgt zu verlassen:Um noch weiter zu gehen, können Sie Token-Parser für
{% continue X %}
und{% break X %}
(wobei X eine Ganzzahl> = 1 ist) schreiben , um mehrere Schleifen wie in PHP zu beenden / fortzusetzen .quelle
squirrelphp/twig-php-syntax
Bibliothek bietet{% break %}
,{% break n %}
und{% continue %}
Token.Von @NHG Kommentar - funktioniert einwandfrei
quelle
Ich habe eine gute Lösung gefunden, um fortzufahren (ich liebe das Pausenbeispiel oben). Hier möchte ich nicht "Agentur" auflisten. In PHP würde ich "weitermachen", aber im Zweig habe ich mir eine Alternative ausgedacht:
ODER ich überspringe es einfach, wenn es meinen Kriterien nicht entspricht:
quelle