นี่คือการแก้ไขhttps://drupal.stackexchange.com/a/236408/67965ที่วน#items
ซ้ำผ่านเรนเดอร์ลูกแทนที่จะเป็นฟิลด์
นามสกุลกิ่งไม้:
/**
* Generates a list of all Twig filters that this extension defines.
*/
public function getFilters() {
return [
new \Twig_SimpleFilter('children', array($this, 'children')),
];
}
/**
* Get the render children of a field
*/
public static function children($variable) {
return array_filter(
$variable,
function($k) { return (is_numeric($k) || (strpos($k, '#') !== 0)); },
ARRAY_FILTER_USE_KEY
);
}
ในทวิกคุณสามารถส่งผ่านเด็กที่เรนเดอร์โดยตรงซึ่งช่วยในรูปแบบการออกแบบอะตอม กำหนดเทมเพลตเอนทิตีตัวอย่างเช่น:
{% include '@molecules/grid.html.twig' with {
head : content.field_title,
grid_columns: content.field_collection_items|children
} %}
โดยที่ grid.html.twig มีลักษณะดังนี้:
{% if head %}
<div class="slab__wrapper">
{{ head }}
</div>
{% endif %}
<div class="grid">
{% for col in grid_columns %}
<div class="grid__column">
{{ col }}
</div>
{% endfor %}
</div>
สิ่งนี้มักจะมีประโยชน์มากกว่าการสร้างเท็มเพลตฟิลด์{{ content.field_collection_items }}
เพราะเลย์เอาต์ของลูกอาจถูกควบคุมในบริบทขององค์ประกอบการออกแบบพาเรนต์