Afficher les informations du parent d'un paragraphe depuis un template TWIG

Dans cet article

Autant certains de mes articles peuvent être hyper longs, autant parfois une ligne ou presque suffit. C'est le cas cette semaine avec un petit bout de TWIG qui s'est avéré utile pour moi récemment.

L'idée est simple, supposons un champ de type Paragraph au sein d'une entité. Dans le template correspondant à ce paragraphe, la variable paragraph représente l'entité entière. Il suffit alors de définir parent comme : 

{% set parent = paragraph._referringItem.parent.parent.entity %}
_referringItem est réalité créé par le formatter EntityReference. Cela signifie que l'astuce fonctionne pour toute entity reference, donc pour accéder au parent d'un fichier, d'une image, du nœud référencé et autre champ de ce type.
Le double parent n'est pas une erreur, mais bien nécessaire.

Grâce à cette nouvelle variable parent, vous pouvez désormais atteindre les valeurs de cette entité. Par exemple en supposant que parent soit le nœud contenant le paragraphe, alors vous pouvez désormais obtenir des valeurs du type :

1
2
3
4
{# Parent node ID #}
{{ parent.nid.value }}
{# Parent node publication status #}
{{ parent.status.value }} 

Evidemment, si parent est lui-même un paragraph, vous pouvez aussi continuer l'opération.

Il me paraît important de rappeler que dans la quasi-totalité des cas, il est préférable d'accéder aux valeurs requises du parent côté PHP dans la méthode preprocess du paragraphe. Grâce au code suivant, la variable parent sera disponible dans le template TWIG du paragraph :
1
2
3
4
function MONMODULE_preprocess_paragraph($variables) {
  $paragraph = $variables['elements']['#paragraph'];
  $variables['parent'] = $paragraph->getParentEntity();
}

Ajouter un commentaire

Votre nom sera affiché publiquement avec votre commentaire.
Votre email restera privé et n'est utilisé que pour vous notifier de l'approbation de ce commentaire.
Sur internet, vous pouvez être qui vous voulez. Soyez quelqu'un de bien :)