By dww on
Change record status:
Published (View all published change records)
Project:
Introduced in branch:
8.9.x
Introduced in version:
8.9.0-alpha1
Issue links:
Description:
Sometimes, you need to move a bunch of fields out of the {{ content }} array and render them elsewhere in your template.
However, you definitely have to render {{ content }} somewhere, or you don't get the expected cache tags for your output.
To avoid the fields showing up twice, you're supposed to do something like this:
<div class="somewhere-fancy">
{{ content.field_1 }}
{{ content.field_2 }}
</div>
<div class="content">
{{ content|without('field_1', 'field_2') }}
</div>
That works okay if you're only dealing with a small number of fields, but sometimes you need to move a lot of fields elsewhere in the template. This gets clumsy.
So the without() filter now takes both strings and Twig arrays as arguments.
Before
<article>
<div class="fancy">
{{ content.field_fancy_1 }}
{{ content.field_fancy_2 }}
{{ content.field_fancy_3 }}
{{ content.field_fancy_4 }}
</div>
<div class="important">
{{ content.field_important_1 }}
{{ content.field_important_2 }}
{{ content.field_important_3 }}
{{ content.field_important_4 }}
</div>
<div class="content">
{{ content|without('field_fancy_1', 'field_fancy_2', 'field_fancy_3', 'field_fancy_4', 'field_important_1', 'field_important_2', 'field_important_3', 'field_important_4', 'field_special') }}
</div>
<div class="special">
{{ content.field_special }}
</div>
</article>
After
{%
set fancy_fields = [
'field_fancy_1',
'field_fancy_2',
'field_fancy_3',
'field_fancy_4',
]
%}
{%
set important_fields = [
'field_important_1',
'field_important_2',
'field_important_3',
'field_important_4',
]
%}
<article>
<div class="important">
{% for field in important_fields %}
{{ content[field] }}
{% endfor %}
</div>
<div class="fancy">
{% for field in fancy_fields %}
{{ content[field] }}
{% endfor %}
</div>
<div class="content">
{{ content|without(fancy_fields, important_fields, 'field_special') }}
</div>
<div class="special">
{{ content.field_special }}
</div>
</article>
Impacts:
Themers