3 votes

Accès aux champs d'une référence d'entité dans une vue (views-view-fields.html.twig)

J'ai donc 2 types de contenu

  • Webinar
  • Personne

Le webinaire a un champ de référence d'entité (label:speaker, id:field_person_speaker)

  • Personne (valeurs multiples)

J'ai une vue (liste non formatée de champs de type contenu webinar) sur le chemin /webinar avec ces champs

  • titre
  • youtubeID
  • date
  • haut-parleur (formateur : entité rendue)

J'ai un modèle (views-view-fields--vcon-webinar.html.twig) qui rend une ligne :

{% set title = fields.title.content %}
{% set date = fields.field_webinar_date.content %}
{% set url = path('entity.node.canonical', { 'node' : row.nid}) %}
{% set speakers = fields.field_person_speaker.content %}

<div class="card h-100 shadow dl-webinar">
  <div class="card-body">
    <a class="dl-webinar-link" href="{{url}}"><span class="btn btn-light btn-sm dl-webinar-signup">Sign up</span></a>
    <div>
      <div class="d-flex">
        {{speakers}}
      </div>
    </div>
    <div>
      <div class="d-flex">
        <div class="p-3">
          <h4>{{title}}</h4>
          <p class="font-weight-light mb-0">{{date}}</p>
        </div>
      </div>
    </div>

  </div>
</div>

Le problème est que je ne peux pas obtenir les valeurs des champs individuels des entités référencées (enceintes). J'ai besoin de ces valeurs de champ (comme : field_person_first_name) car j'ai besoin d'un contrôle total du modèle de sortie.

<div class="dl-webinar-bio d-flex align-items-end flex-row-reverse  flex-fill">
    <div><p class="dl-webinar-bio-name"><strong>First name, Last name</strong> <small class="font-weight-light">Project manager</small></p></div>
</div>

Quelqu'un peut-il m'aider ? thx....

0voto

Sharklalu Points 196

Le moyen le plus simple d'y parvenir est de rendre le type de contenu Personne sur un mode d'affichage spécifique. Ensuite, vous remplacez le modèle node--person-yourviewmode.html.twig avec la structure HTML exacte que vous attendez.

Donc tu n'as pas changé views-view-fields--vcon-webinar.html.twig modèle.

et en node--person-yourviewmode.html.twig :

<div class="dl-webinar-bio d-flex align-items-end flex-row-reverse  flex-fill">
    <div><p class="dl-webinar-bio-name"><strong>{{content.field_firstname}} {{ content.field_lastname}}</strong> <small class="font-weight-light">Project manager</small></p></div>
</div>

Le modèle ci-dessus sera appelé dans views-view-fields--vcon-webinar.html.twig

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X