Drupal Twig嵌套段落(实体引用修订列表)循环渲染报错求解决
Drupal双层嵌套段落渲染实体引用组件库的错误解决方法
你遇到的错误是因为field_reference_component_library是实体引用修订字段,直接调用[0].value拿到的是目标实体的ID(target_id),不是可渲染的内容,Drupal渲染系统无法识别这个值,所以抛出了键无效的错误。下面是几种可行的解决方法:
方法1:直接渲染字段的渲染数组(推荐)
利用Drupal自带的render过滤器,直接处理字段的渲染逻辑,不需要手动操作实体ID:
<div class="row"> <div class="col-sm-12"> {% for key, item in content.content.field_slide_reference if key|first != '#'%} {{ item['#paragraph'].field_title[0].value|raw }} {# 渲染组件库引用字段 #} {{ item['#paragraph'].field_reference_component_library|render }} {% endfor %} </div> </div>
方法2:加载实体并指定显示模式渲染
如果需要用特定的显示模式(比如teaser或自定义模式),可以先加载引用的实体,再用view过滤器渲染:
<div class="row"> <div class="col-sm-12"> {% for key, item in content.content.field_slide_reference if key|first != '#'%} {{ item['#paragraph'].field_title[0].value|raw }} {# 获取引用的组件库实体 #} {% set component_entity = item['#paragraph'].field_reference_component_library.entity %} {% if component_entity %} {# 渲染实体的默认显示模式,可替换为指定模式如'custom_mode' #} {{ component_entity|view }} {% endif %} {% endfor %} </div> </div>
注意事项
- 永远避免直接访问实体引用字段的
value属性,这类字段存储的是目标实体ID,不是可渲染内容。 - 增加空值判断(比如
{% if component_entity %}),防止字段为空时触发额外错误。
内容的提问来源于stack exchange,提问作者jessie_ri
相关产品推荐
相关产品推荐

