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

Drupal如何在Twig模板中识别组类型下的字段

Twig模板调用Group类型复选框字段的正确写法

你之前尝试的三种写法失效原因如下:

  • content.myfields.value:content是Drupal模板里的渲染数组,存的是经过格式化处理的待渲染内容,不是字段原始存储值,直接读value拿不到复选框的布尔状态
  • node.myfields.value:Group模块的组(Group)是独立实体,和节点(Node)是平级的实体类型,根本不会挂载在node变量下
  • group_data.myfields.value:Group模块默认模板上下文里没有group_data这个顶层变量,属于变量名写错了

标准实现方法

  1. 先确认模板上下文变量:开启Twig调试后,在模板顶部加{{ dump() }}就能打印当前所有可用变量,在组实体对应的模板(比如group.html.twig、按组类型覆写的特定模板)里,组实体对象的默认变量名是group。
  2. 直接从实体对象读取复选框的原始值做判断,不要从渲染数组里取值。复选框选中时存储值为1,未选中为0,参考代码如下:
{# 注意把field_my_checkbox替换成你自己复选框字段的实际机器名 #}
{% if group.field_my_checkbox.value %}
  <div class="custom-block">
    复选框选中时才会显示的内容
  </div>
{% endif %}

特殊场景适配

如果你不是在组本体的模板里,而是在和组关联的节点/其他实体模板里调用这个字段,需要先通过关联引用字段拿到组实体对象,再读字段值:

{# 先拿到关联的组实体,field_group_relation替换成你实际的组引用字段机器名 #}
{% set related_group = node.field_group_relation.entity %}
{% if related_group.field_my_checkbox.value %}
  选中状态才显示的内容
{% endif %}

踩坑提醒:不要用content.field_xxx.value的写法做判断,content数组里的字段值已经经过主题预处理、格式化输出,拿到的是渲染后的标记字符串或者空值,判断逻辑会失效。

内容的提问来源于stack exchange,提问作者Badgohan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:54:33