Comment rendre des champs à partir d'une référence d'entité dans des modèles de noeud? [Drupal 8]

9

Pour le contexte, je traite de deux types de contenu: article et team_profile. Dans les nœuds d'article, nous avons un champ de référence d'entité tirant un nœud team_profile pour servir d'informations sur l'auteur.

Je voudrais juste rendre l'entité avec un nouveau mode d'affichage, mais notre conception a la photo directement au-dessus de la date et du nom publiés: capture d'écran de la conception des informations de l'auteur

Dans D7, je voudrais dpm($content)et descendez jusqu'aux informations sur le nœud, double-cliquez et retirez le reste du chemin de référence. J'utilise Kint et je suis capable de cracher sur le contenu de référence de l' entité à un certain niveau, {{ kint(content.field_blog_author[0]['#node']) }}. Le niveau suivant auquel je veux accéder est values, mais essayer ce qui suit me donne NULL:

  • content.field_blog_author[0]['#node’][‘values’]
  • content.field_blog_author[0]['#node’]=>values
  • content.field_blog_author[0]['#node’]->values

J'aimerais finalement rendre les champs titleet à field_team_imagepartir du nœud référencé ( vu ici dans la sortie kint ). Je n'ai pas trouvé d'informations à ce sujet dans la documentation ou en recherchant. Quelqu'un m'aiderait-il à se décoller?

alexbea
la source

Réponses:

13

#node il y a en fait le nœud actuel.

Si vous souhaitez accéder aux champs et à leurs valeurs, commencez par le nœud, pas le contenu, qui est un tableau de rendu avec les champs configurés.

Vous pouvez accéder à l'entité de référence comme ceci {{ node.field_blog_author.entity }}.

De là, vous pouvez continuer à nouveau vers le champ de l'entité référencée que vous souhaitez afficher. Vous pouvez essayer d'appeler la méthode view, avec l'affichera avec les paramètres par défaut, vous pouvez également lui passer un mode view sous forme de chaîne ou un tableau d'affichage des paramètres (vous n'êtes pas sûr de la syntaxe exacte pour cela dans twig).

De plus, ma référence standard, voir http://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet pour un excellent aperçu des entités de contenu, comment elles sont structurées et comment accéder aux valeurs. La plupart de cela s'applique également aux rameaux.

Et enfin, lorsque vous essayez de comprendre ce qui se trouve dans une entité de contenu, utilisez node.toArray (), qui vous donne une représentation de tableau qui est très proche de la façon dont vous pouvez y accéder en tant qu'objet. Alors que la structure interne est assez différente.

Berdir
la source
Merci, Berdir. {{ kint(node.field_blog_author.entity) }}génère un joli tableau du nœud référencé, mais maintenant je ne peux pas aller plus loin. {{ kint(node.field_blog_author.entity.title) }}, par exemple, rompt la page, ne chargeant aucune ressource ou quoi que ce soit au-delà de la région d'en-tête. Idem pour nidou autres. Juste pour rire, essayer d'inclure l'entité référencée dans le contenu du nœud avec {{ node.field_blog_author.entity }}renvoyé un message d'erreur disant apparemment que le nœud ne pouvait pas être affiché dans le modèle comme ça.
alexbea
Il semble que ce soient des valeurs protégées . Est-ce que ça sonne bien? Peut-être que je dois créer un mode d'affichage pour la photo uniquement, puis utiliser le mode d'affichage "étiquette" pour le nom.
alexbea
Oui, ils sont protégés. Comme je l'ai dit, utilisez toArray (), qui fonctionne également sur node.field_blog_author.entity.title est un objet champ, si vous voulez valoriser, vous avez besoin de ... entity.title.value. Assurez-vous de lire la feuille de triche référencée, elle explique beaucoup de ces choses.
Berdir
1
J'apprécie l'aide. Cependant, je ne comprends pas vraiment comment utiliser les informations de la feuille de triche. L'ajout .valuea fonctionné dans ce cas et répond à ma question d'origine.
alexbea
@berdir l'URL du site est cassée.
chalo