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

如何在Twig模板中对父级与子级字段进行分组展示?

实现方案

你的视图返回的每一行都同时携带一级分组(HLG)和对应的二级子组数据,重复出现的一级分组信息不需要重复输出,因此先做数据聚合分组再渲染即可实现需求。

完整Twig实现代码

{# 第一步:初始化分组数组,将相同一级组的子组合并 #}
{% set grouped_hlg = {} %}
{% for row in rows %}
    {% set level1_title = row.field_hlg_level1_title %}
    {% set level1_abstract = row.field_hlg_level1_Abstract %}
    {% set subgroup = {
        'title': row.field_hlg_level2_title,
        'abstract': row.field_hlg_level2_Abstract
    } %}

    {# 如果当前一级组还未加入分组数组,先初始化一级组基础信息 #}
    {% if level1_title not in grouped_hlg|keys %}
        {% set grouped_hlg = grouped_hlg|merge({
            (level1_title): {
                'abstract': level1_abstract,
                'subgroups': []
            }
        }) %}
    {% endif %}

    {# 将当前二级子组加入对应一级组的子组列表 #}
    {% set grouped_hlg = grouped_hlg|merge({
        (level1_title): grouped_hlg[level1_title]|merge({
            'subgroups': grouped_hlg[level1_title].subgroups|merge([subgroup])
        })
    }) %}
{% endfor %}

{# 第二步:渲染分组后的数据 #}
{% for level1_title, level1_data in grouped_hlg %}
<div class="group_hlglevel1">
    <p>field_hlg_level1_title : {{ level1_title }}</p>
    <p>field_hlg_level1_Abstract : {{ level1_data.abstract }}</p>

    {# 遍历当前一级组下的所有二级子组 #}
    {% for subgroup in level1_data.subgroups %}
    <div class="group_hlglevel2" style="margin-left: 2em;">
        <p>field_hlg_level2_title : {{ subgroup.title }}</p>
        <p>field_hlg_level2_Abstract: {{ subgroup.abstract }}</p>
    </div>
    {% endfor %}
</div>
{% endfor %}

代码说明

  • 先遍历所有原始行,以一级组标题为唯一标识做聚合,把相同一级组下的所有二级子组都归到同一个分组下,避免一级组信息重复输出
  • 渲染的时候先输出一级组的标题和摘要,再循环输出该组下的所有二级子组内容,二级组的缩进效果可以通过调整CSS实现,示例中用margin-left做了基础演示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:30:01