Ketika berhadapan dengan array yang dapat di render di PHP, saya bisa menggunakan Element :: children () untuk mengakses elemen yang bukan #
properti tetapi elemen rendering subordinated (membentuk item di dalam fieldset, item di dalam widget bidang, dll). Misalnya, cuplikan ini dari file.module:
<?php
if ($element['#multiple']) {
foreach (Element::children($element) as $name) {
// ...
}
}
?>
Bagaimana saya bisa melakukan hal yang sama di templat Ranting? Jika saya melakukannya {% for child in element %}
, itu akan termasuk juga #type
, #cache
dll.
Jawaban:
sumber
Saya telah membuat filter Ranting yang kembali bersama anak-anak sebagai
ArrayIterator
.mymodule/mymodule.services.yml
mymodule/src/TwigExtension/Children.php
dalam tempelan ranting:
sumber
Gunakan modul Twig Tweak , yang, di antara fitur-fitur luar biasa lainnya, memiliki filter "anak-anak":
sumber
Berikut adalah modifikasi dari https://drupal.stackexchange.com/a/236408/67965 yang melewati anak-anak render alih-alih bidang
#items
.Ekstensi ranting:
Dalam ranting, Anda dapat melewati anak-anak yang diberikan secara langsung, yang membantu dalam pola desain atom. Tetapkan templat entitas, misalnya:
dimana grid.html.twig adalah sesuatu seperti:
Ini biasanya lebih bermanfaat daripada harus membuat templat bidang
{{ content.field_collection_items }}
karena tata letak anak-anak dapat dikontrol dalam konteks elemen desain induk.sumber