从树枝模板中的字段打印具有多个条目的图像字段


9

我有一个用于自定义内容类型的树枝模板。它能够渲染大多数字段,但是我无法打印包含多个图像的图像字段。

节点--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的答案具有许多优点,但是为了您的理智,将其替换为“ for”循环中的node.field_gallery_images的content.field_gallery_images将为您提供循环中的每个图像实体。
RominRonin

Answers:


9

与其他任何字段一样,在节点模板中打印image字段:

{{ content.field_gallery_images }}

然后使用字段树枝遍历多个字段项:

field--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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.