小枝テンプレートのフィールドからの複数のエントリを持つ画像フィールドを印刷する


9

カスタムコンテンツタイプの小枝テンプレートがあります。また、ほとんどのフィールドを問題なくレンダリングできますが、複数の画像を含む画像フィールドを印刷することはできません。

node--mycontenttype.html.twigには

{{ content.field_mytitle }}
{{ content.field_myheaderimage }}
<div class="row expanded">
    {% for galleryimage in content.field_gallery_images %}
           <div class="gallery-image-item"> {{ galleryimage }} </div>
    {% endfor %}
</div>

content.field_mytitleとcontent._field_myheaderimageは、タイトルと画像を適切に出力します。しかし、forループを使用すると

    {% for galleryimage in content.field_gallery_images %}
           <div class="gallery-image-item"> {{ galleryimage }} </div>
    {% endfor %}

エラーが表示されます

Exception: Object of type Drupal\node\Entity\Node cannot be printed. in Drupal\Core\Template\TwigExtension->escapeFilter() (line 443 of core/lib/Drupal/Core/Template/TwigExtension.php).

使うだけで

{{ content.field_gallery_images }}

各画像を出力することはできますが、これにより、各項目をdivでラップして、それぞれにコンテンツを追加することはできません。


以下の@ 4k4からの回答には多くの利点がありますが、正直に言うと、次のように置き換えます。
RominRonin

回答:


9

他のフィールドと同様に、ノードテンプレートの画像フィールドを印刷します。

{{ content.field_gallery_images }}

次に、フィールド小枝を使用して、複数のフィールドアイテムをループします。

フィールド--field-gallery-images.html.twig

<div class="row expanded">
  {% for item in items %}
    <div class="gallery-image-item">{{ item.content }}</div>
  {% endfor %}
</div>

1

D8では、カルーセルを生成する方法で画像にforeachループを作成できました。

<!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">
    {% for i in 0..content.field_accueil_image_slide|length %}
     {%if content.field_accueil_image_slide[i]['#item'].entity.uri.value != "" and content.field_accueil_image_slide[i]['#item'].entity.uri.value is not empty %}
        <div class="item {{ (i == 0) ? 'active' : '' }}" style="">{{ content.field_accueil_image_slide[i]}}</div>
     {%endif%}
    {%endfor%}
  </div>

大きな助けに感謝します。小枝のうさぎの穴がわかるのになぜdrupalを使うのですか?:D
cwiggo 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.