web-dev-qa-db-fra.com

Comment vérifier le mode d'affichage dans le modèle twig?

Nous avons un champ (field_tabs) qui est utilisé sur le type de contenu de base et d'article. Sur le type de contenu de page de base, il a un mode d'affichage personnalisé (view_mode_vertical) et sur le type de contenu d'article, il a un mode d'affichage personnalisé différent (view_mode_horizontal).

Page de base (mode d'affichage par défaut) Gérer l'affichage

  • field_tabs (mode d'affichage = view_mode_vertical)
  • titre
  • corps

Article (mode d'affichage par défaut) Gérer l'affichage

  • field_tabs (mode d'affichage = view_mode_horizontal)
  • titre
  • corps

Dans un field.html.twig , comment pouvons-nous détecter le mode d'affichage?

Nos deux options que nous avons explorées étaient soit un modèle de nœud ou un modèle de champ (nous sommes allés avec le champ). Nous aimerions le faire d'une manière qui nous suffit d'ajouter la logique pour détecter le view_mode en un seul endroit. Dans le cas où nous ajoutons un troisième ou quatrième view_mode, nous pouvons simplement ajouter un autre elseif (ou changer de casse) au code.

Exemple Twig code que nous recherchions:

{% if view_mode == 'view_mode_vertical' %}
  <div class="tabs__vertical">...</div>
{% else %}
  <div class="tabs__horizontal">...</div>
{% endif %}
2
usernameabc

Dans un field.html.twig, comment détecter le mode d'affichage?

Dans un modèle de champ, il n'y a pas de variable de niveau supérieur pour le mode d'affichage comme dans le modèle de nœud. Vous pouvez en créer un puis votre code twig devrait fonctionner:

{% set view_mode = element['#view_mode'] %}

Une autre option consiste à ajouter une suggestion de nom de modèle, voir Modèle de champ pour le mode d'affichage .

Les deux sont des options valides. Il existe de nombreux projets qui dépendent fortement de la logique Twig tandis que d'autres projets préfèrent PHP dans les crochets de suggestion de prétraitement et de nom de modèle).

6
4k4