web-dev-qa-db-fra.com

Dans le fichier Drupal 8 view.html.twig, comment puis-je accéder au contenu de la vue tel que le titre de champ individuel et / ou le contenu du champ?

En utilisant views-view.html.twig Comme point de départ, je peux afficher {{ rows }}, Mais je veux parcourir chaque champ de chaque ligne pour les agréger et les styliser.

Dans Drupal 7, j'utilise dpm(rows) pour localiser (dans le tableau) où le contenu, l'étiquette etc. Mais kint ne semble pas me fournir le même information. Quelqu'un peut-il aider?

3
RominRonin

Dans views-view.html.twig n'est pas approprié pour styliser votre ligne et vos champs.

Pour les styliser, vous devez d'abord remplacer le modèle "views_view_'format_style '" (style de format spécifié lorsque vous modifiez/créez une vue). Ici, vous pouvez styliser la ligne et accéder aux variables "champs" (utilisez kint (ligne) pour les voir).

Quelque chose comme:

{% for row in rows %}
  {%
    set row_classes = [
      default_row_class ? 'views-row',
    ]
  %}
  {{ kint(row) }} {# devel #}
  <h2> {{row.content['#node'].getTitle()}} </h2> {# access fields #}
  <div{{ row.attributes.addClass(row_classes) }}>
    {{ row.content }}
  </div>
{% endfor %}

Pour les champs de style, son meilleur modèle de champ de remplacement.

Par exemple field--node--body--article.html.twig:

{% set mode = element['#view_mode'] %}
{% if label_hidden %}
  {% for item in items %}
    {% if mode == 'full' %}
        <div{{ attributes }}>{{ item.content }}</div>
    {% elseif mode == 'teaser' %}
        <p{{ attributes }}>{{ item.content }}</p>
    {% endif %}
  {% endfor %}
{% else %}
  <div{{ attributes }}>
    <div{{ title_attributes }}>{{ label }}</div>
    {% for item in items %}
      <div{{ item.attributes }}>{{ item.content }}</div>
    {% endfor %}
  </div>
{% endif %}
4
Vagner