Saya mencoba menggunakan loop sederhana, dalam kode asli saya, loop ini lebih kompleks, dan saya perlu break
iterasi ini seperti:
{% for post in posts %}
{% if post.id == 10 %}
{# break #}
{% endif %}
<h2>{{ post.heading }}</h2>
{% endfor %}
Bagaimana cara menggunakan perilaku break
atau continue
struktur kontrol PHP di Twig?
first
filter ranting: twig.sensiolabs.org/doc/filters/first.htmlset break = true
ini akan dieksekusi kecuali Anda memasukkannya ke dalamelse
pernyataan. Lihat twigfiddle.com/euio5wset break = true
di bagian paling akhir . Tapi ya, itu tergantung pada kode Anda, jadi terima kasih telah menyebutkannya untuk memperjelasDari dokumen TWIG dokumen :
Tetapi tetap saja:
Contoh 1 (untuk daftar besar Anda dapat memfilter posting menggunakan slice ,
slice(start, length)
):Contoh 2:
Anda bahkan dapat menggunakan filter TWIG sendiri untuk kondisi yang lebih kompleks, seperti:
sumber
{% for post in posts|slice(0,10) %}
Unlike in PHP, it's not possible to break or continue in a loop.
saat membaca dokumen. Tapi saya pikirbreak
dancontinue
ini adalah fitur yang bagus, yang perlu ditambahkanfor
harus bisa dipecahkan setelah pukulan pertama. Jawaban @VictorBocharsky benar{% for post in posts|slice(0,10) %}
untuk daftar besar. Lihat komentar pertama saya. Saya juga telah memperbarui jawaban saya.Cara untuk dapat menggunakan
{% break %}
atau{% continue %}
menulisTokenParser
untuk mereka.Saya melakukannya untuk
{% break %}
token dalam kode di bawah ini. Anda dapat, tanpa banyak modifikasi, melakukan hal yang sama untuk file{% continue %}
.AppBundle \ Twig \ AppExtension.php :
AppBundle \ Twig \ BreakToken.php :
AppBundle \ Twig \ BreakNode.php :
Kemudian Anda dapat menggunakan
{% break %}
untuk keluar dari loop seperti ini:Untuk melangkah lebih jauh, Anda dapat menulis parser token
{% continue X %}
dan{% break X %}
(di mana X adalah integer> = 1) untuk keluar / melanjutkan beberapa loop seperti di PHP .sumber
squirrelphp/twig-php-syntax
perpustakaan menyediakan{% break %}
,{% break n %}
dan{% continue %}
token.Dari komentar @NHG - bekerja dengan sempurna
sumber
Saya telah menemukan solusi yang bagus untuk melanjutkan (suka contoh istirahat di atas). Di sini saya tidak ingin mencantumkan "agensi". Di PHP saya akan "melanjutkan" tetapi di ranting, saya menemukan alternatif:
ATAU Saya melewatkannya jika tidak memenuhi kriteria saya:
sumber