You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:25:23