web-dev-qa-db-fra.com

Exclure les champs de l'impression en Twig

Je remplace le modèle de champs

vues-vues-champs - nom_machine.html.twig

Je veux rendre certains champs dans un div différent des autres champs. Je ne veux pas que les champs soient rendus deux fois.

<div class="foo">
  {{ fields.field_events_date_start.content }}
  {{ fields.field_events_date_start_1.content }}
</div>

{% for field in fields -%}
  {{ field.separator }}
  {%- if field.wrapper_element -%}
    <{{ field.wrapper_element }}{{ field.wrapper_attributes }}>
  {%- endif %}
  {%- if field.label -%}
    {%- if field.label_element -%}
      <{{ field.label_element }}{{ field.label_attributes }}>{{ field.label }}{{ field.label_suffix }}</{{ field.label_element }}>
    {%- else -%}
      {{ field.label }}{{ field.label_suffix }}
    {%- endif %}
  {%- endif %}
  {%- if field.element_type -%}
    <{{ field.element_type }}{{ field.element_attributes }}>{{ field.content }}</{{ field.element_type }}>
  {%- else -%}
    {{ field.content }}
  {%- endif %}
  {%- if field.wrapper_element -%}
    </{{ field.wrapper_element }}>
  {%- endif %}
{%- endfor %}

Si j'exclus ces champs de l'affichage dans les vues, ils les masquent lorsqu'ils sont rendus avant et dans la zone de contenu normale.

{{ content|without('field_events_date_start,field_events_date_start_1') }}

... Ne fonctionne pas car je rend des champs, pas du contenu.

Comment obtenir le rendu des champs avant, mais être exclu plus tard?

3
heart.cooks.mind

Vous devez supprimer les deux champs de fields.

<div class="foo">
  {{ fields.field_events_date_start.content }}
  {{ fields.field_events_date_start_1.content }}
</div>

{% for field in fields|without('field_events_date_start',  field_events_date_start_1') %}
  ...
{% endfor %}
5
4k4

Voici un exemple de ce que j'ai fait la semaine dernière.

Nom de fichier views-view-fields--view_name--display_id.html.twig C'est-à-dire views-view-fields--acquia-search--results.html.twig Dans mon cas.

{{ fields.title.content }}
<p class="search-result__item-description">{{ fields.search_api_excerpt.content }}</p>
<ul class="search-result__item-meta">
  <li class="search-result__item-link"><span class="label">View More:</span> {{ fields.url.content }}</li>
  <li class="search-result__item-date"><span class="label">Date Modified:</span> {{ fields.changed.content }}</li>
</ul>

J'imprime les champs à ma discrétion et je fournis mon propre balisage.

Si vous installez Twig XDebug , vous pouvez déposer {{ breakpoint() }} dans votre modèle et voir vos variables.

0
Kevin