Đây là bản sửa đổi của /drupal//a/236408/67965 mà vòng lặp qua các kết xuất con thay vì trường #items
.
Phần mở rộng twig:
/**
* 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
);
}
Trong twig, sau đó bạn có thể đi qua trẻ em được kết xuất trực tiếp, điều này giúp trong các mẫu thiết kế nguyên tử. Xác định một mẫu thực thể, ví dụ:
{% include '@molecules/grid.html.twig' with {
head : content.field_title,
grid_columns: content.field_collection_items|children
} %}
trong đó Grid.html.twig là một cái gì đó như:
{% 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>
Điều này thường hữu ích hơn việc phải hiển thị một mẫu trường {{ content.field_collection_items }}
vì bố cục của các phần tử con có thể được kiểm soát trong ngữ cảnh của phần tử thiết kế cha.