it-swarm.com.de

twig für Schleifenzugriffswert mit Array

ich habe eine for-Schleife

{% for row in rows %}
    {{ row.content }}
{% endfor %}

wird so ausgedruckt

<div> one </div>
<div> two </div>
<div> three </div>
<div> ... </div>

aber ich möchte mit einem Schlüssel auf die Werte zugreifen, damit ich die Werte einzeln abrufen kann, damit ich so etwas tun kann

<div class="container">
    <div> one </div>
</div>

<div class="second-container">
    <div> one </div>
</div>

<div class="anyclassname">
    <div> one </div>
</div>

grundsätzlich drucken Sie den Wert an einer beliebigen Stelle auf ein Div meiner Wahl. Ist es möglich ?? Bitte helfen Sie

dies ist für eine Ansichtsvorlage

2
The Naga Tanker

In views-view.html.twig ist es nicht geeignet, Ihre Zeilen und Felder zu formatieren.

Um sie zuerst zu formatieren, müssen Sie die Vorlage "views_view_'format_style '" überschreiben (Formatstil, der beim Bearbeiten/Erstellen einer Ansicht angegeben wird). Hier können Sie Zeilen formatieren und auf 'Feld'-Variablen zugreifen (verwenden Sie kint (Zeile), um sie anzuzeigen).

Etwas wie:

{% 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 %}

Für Stilfelder ist es besser, die Feldvorlage zu überschreiben.

Zum Beispiel 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 %}

quelle: In Drupal 8 view.html.twig-Datei, wie greife ich auf den Ansichtsinhalt wie den einzelnen Feldtitel und/oder den Feldinhalt zu?

http://twig.sensiolabs.org/doc/tags/for.html

1
DRUPWAY

Die schnellste/einfachste Lösung besteht darin, auf das Feld zu klicken und dann auf Ergebnisse neu schreiben zu klicken.

Verwenden Sie das Ersatzmuster für Ihr Feld und geben Sie Folgendes ein:

<div class="container">
    <div> {{ field_name }} </div>
</div>

<div class="second-container">
    <div> {{ field_name }} </div>
</div>

<div class="anyclassname">
    <div> {{ field_name }} </div>
</div>

Alternativ können Sie ein Ansichts-Ansichtsfeld erstellen - [Ansichtsname] -- [Maschinenname] . Html.twig Datei und dort den gleichen Code einfügen.


Wenn Ihr fragliches Feld unbegrenzte Werte hat:

  • Klicken Sie in Ihr Feld und unter Mehrere Feldeinstellungen , deaktivieren das Display all values in the same row box.

enter image description here


es ist eine Ansichtsseite mit drei Feldern ... // 2 Bild und einem Text - all dies muss für mich auf demselben Div gedruckt werden.

Dann in Ihre Vorlagendatei einfügen:

<div class="container">
{{ fields.field_company_color_scheme.content }}
{{ fields.field_port_landing_feature.content }}
{{ fields.field_com.content }}
</div>
1
No Sssweat

Das habe ich mir also ausgedacht

also anstatt zu benutzen

{% for row in rows %}
    {{ row.content }}
{% endfor %}

ich habe die for-Schleife komplett entfernt und stattdessen verwendet

<div class= red > {{ rows[0] . content}} </div>
<div class= yellow > {{ rows[1] . content}} </div>
<div class= blue > {{ rows[2] . content}} </div>
<div class= green > {{ rows[3] . content}} </div>

auf diese Weise kann ich auch steuern, wie viele Elemente angezeigt werden, und einen Div-Namen Ihrer Wahl oder innerhalb eines anderen Div angeben.

jetzt bleibt die Frage, wie man das auseinander nimmt

  {{ rows[0] . content}}

das Array innerhalb des {{content}} Teils, damit sie weiter auseinander gebrochen werden können ... jede Idee ???

0
The Naga Tanker