Skip to content
This repository was archived by the owner on Mar 31, 2023. It is now read-only.

twig function bem() removes attributes of parent twig file #370

@ndf

Description

@ndf

What you did:

We have a hierarchy of templates.

  1. In side the top-template (in our case webform.html.twig) we call the child template with an include like this {% include "@atoms/02-text/00-headings/_heading.twig".
  2. Inside the child template function bem() is called: {{ bem(heading_base_class, (heading_modifiers), heading_blockname) }}
  3. Further down in the parent template, after the include, {{attributes}} is rendered. In this case it must print the form attributes like id, class, but also form-specific attributes like method and action.

What happened:
The function bem() in bem.function.php removes/resets the attribute function in the following block of code:

// Remove the attribute from context so it doesn't trickle down to
// includes.
$context['attributes']->removeAttribute($key);

The effect is that {{attributes}} is empty.
If I uncomment above, then bem() prints the attributes of the webform in the _heading.twig. Also not good. But the good part is that the webform itself can print its attributes. (In this example the attribute-list is printed 2 times in the webform and the heading template).

Reproduction repository (if necessary):

Problem description:
How can this problem be avoided?

Suggested solution:
Either that the bem() function resolves this automatically,
or by adding some documentation how the bem() function must be called to avoid this problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions