【问题标题】:Check if field collection image field exists - empty field creates error检查字段集合图像字段是否存在 - 空字段会产生错误
【发布时间】:2017-01-19 23:54:06
【问题描述】:

我有一个包含三个值(两个文本,一个图像)的字段集合。当我像这样将这些呈现到页面时:

{% for service in node.field_sub_service %}
        {% set subservice_id =  service.getFieldCollectionItem().field_sub_service_title.value|lower|replace({" ": "-"}) %}
        <div id="{{subservice_id}}" class="subservice">
             <h5>{{service.getFieldCollectionItem().field_sub_service_title.value}}</h5>
             <p>{{service.getFieldCollectionItem().field_sub_service_description.value}}</p>

             <img src="{{file_url(service.getFieldCollectionItem().field_sub_service_image.entity.uri.value)}}" />
        </div>
{% endfor %}

除非图像字段为空白,否则一切正常。所以我尝试建立一个典型的

    {% if service.getFieldCollectionItem().field_sub_service_image.entity.uri.value %}
        <img src="{{file_url(service.getFieldCollectionItem().field_sub_service_image.entity.uri.value)}}" />
{% endif %}

{% if service.getFieldCollectionItem().field_sub_service_image.entity.uri.value is defined %}
      <img src="{{file_url(service.getFieldCollectionItem().field_sub_service_image.entity.uri.value)}}" />
{% endif %}

似乎无论如何,除非图像字段有一个值,否则我会在此处收到以下错误

Twig_Sandbox_SecurityError:调用“uri”方法 “Drupal\field_collection\Entity\FieldCollectionItem”对象不是 允许

更新

我还以几种方式尝试了下面的“|渲染”建议。

【问题讨论】:

标签: symfony drupal twig drupal-8


【解决方案1】:

我最终检查了文件名是否为 NULL,但我认为这不是一个有说服力的解决方案,我仍然愿意接受建议。

{% if service.getFieldCollectionItem().field_sub_service_image.entity.filename %}
    <img src="{{file_url(service.getFieldCollectionItem().field_sub_service_image.entity.uri.value)}}" />
{% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多