Lorsque j'ai affaire à un tableau de rendu en PHP, je peux utiliser Element :: children () pour accéder aux éléments qui ne sont pas des #
propriétés mais des éléments de rendu subordonnés (éléments de formulaire à l'intérieur d'un fieldset, éléments à l'intérieur d'un widget de champ, etc.). Par exemple, cet extrait de fichier.module:
<?php
if ($element['#multiple']) {
foreach (Element::children($element) as $name) {
// ...
}
}
?>
Comment puis-je faire de même dans un modèle Twig? Si je le fais {% for child in element %}
, cela comprendra également #type
, #cache
etc.
Réponses:
la source
J'ai créé un filtre Twig qui revient avec les enfants en tant que
ArrayIterator
.mymodule/mymodule.services.yml
mymodule/src/TwigExtension/Children.php
dans le modèle Twig:
la source
Utilisez le module Twig Tweak , qui, entre autres fonctionnalités merveilleuses, possède un filtre "enfants":
la source
Voici une modification de https://drupal.stackexchange.com/a/236408/67965 qui parcourt les enfants de rendu au lieu du champ
#items
.L'extension des rameaux:
Dans twig, vous pouvez ensuite passer directement par les enfants rendus, ce qui aide aux modèles de conception atomique. Définissez un modèle d'entité, par exemple:
où grid.html.twig est quelque chose comme:
Cela est généralement plus utile que d'avoir à rendre un modèle de champ
{{ content.field_collection_items }}
car la disposition des enfants peut être contrôlée dans le contexte de l'élément de conception parent.la source