检查字段集合图像字段是否存在 - 空字段会创建错误

时间:2017-01-19 23:54:07

标签: symfony drupal twig drupal-8

我有一个字段集合,它有三个值(两个文本,一个图像)。当我像这样将这些渲染到页面时:

{% 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:呼叫&#34; uri&#34;一个方法   &#34; Drupal的\ field_collection \实体\ FieldCollectionItem&#34;对象不是   允许

更新

我也试过&#34; |渲染&#34;下面以几个时尚的方式提出建议。

1 个答案:

答案 0 :(得分:0)

我最终检查文件名是否为NULL,但我发现这不是一个雄辩的解决方案,我仍然愿意接受建议。

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