You need to enable JavaScript to run this app. Symfony Twig模板多层for循环嵌套导致球员分类数据异常显示问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Symfony Twig模板多层for循环嵌套导致球员分类数据异常显示问题咨询

问题根因

你当前使用的多层嵌套{% for %}属于笛卡儿积遍历逻辑,只要任意一个球员分类的数组为空,整个循环就不会执行,这就是部分分类无数据时所有内容都不渲染的核心原因。

调整后代码

你可以先统计所有分类数组的最大长度,按索引独立读取每个分类的球员,代码如下:

<tbody>
    {# 计算所有球员分类的最大长度,作为总遍历次数 #}
    {% set maxLength = [defensers|length, midfielders|length, forwards|length, goalkeepers|length]|max %}
    
    {% for index in 0..maxLength - 1 %}
    <tr>
        <td>
            <div class="player-in-club">
                {% set gk = goalkeepers[index]|default(null) %}
                {% if gk %}
                <a href="{{ path('show_player', {'id': gk.id }) }}">{{ gk.name }}</a>
                {% endif %}
            </div>
        </td>
        <td>
            <div class="player-in-club">
                {% set defenser = defensers[index]|default(null) %}
                {% if defenser %}
                <a href="{{ path('show_player', {'id': defenser.id }) }}">{{ defenser.name }}</a>
                {% endif %}
            </div>
        </td>
        <td>
            <div class="player-in-club">
                {% set midfielder = midfielders[index]|default(null) %}
                {% if midfielder %}
                <a href="{{ path('show_player', {'id': midfielder.id }) }}">{{ midfielder.name }}</a>
                {% endif %}
            </div>
        </td>
        <td>
            <div class="player-in-club">
                {% set forward = forwards[index]|default(null) %}
                {% if forward %}
                <a href="{{ path('show_player', {'id': forward.id }) }}">{{ forward.name }}</a>
                {% endif %}
            </div>
        </td>
    </tr>
    {% endfor %}
</tbody>

逻辑说明

  • 遍历次数由人数最多的分类决定,不会因为某分类人数少就截断其他分类的展示
  • 每个分类的球员读取完全独立,哪怕某分类没有任何数据,其他分类的球员也会正常渲染
  • 无对应球员的位置会自动留空,如果你需要展示占位提示,在{% if %}的else分支添加对应提示文本即可。

内容的提问来源于stack exchange,提问作者Leïllah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 10:54:08