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

如何让Twig中的员工排班循环完成一轮后重复执行?

嘿,我来帮你搞定这个Twig循环的重复问题!先理清楚你要的效果:每个员工对应的X位置要按相同规律重复,第一轮从3到13(对应索引2到12),第二轮从14开始(索引13),每个员工的X位置在上一轮的基础上加上员工总数,对吧?

原代码里用multiplier乘法的逻辑其实不太符合这个需求——它会让后续的X位置间隔越来越大,而你需要的是固定间隔(等于员工数)的重复排列。咱们换个更简洁的逻辑,用模运算来实现这个重复规律:

修改后的Twig代码

{% if employees %}
    {% set employee_count = employees|length %}
    {% set start_index = 2 %} {# 对应第3列,因为Twig循环索引从0开始 #}
    {% for employeeIndex, employee in employees %}
        <tr>
            <td>{{ employee.werknemers }}</td>
            {% for workdayIndex, workday in workdays %}
                {% if workdayIndex >= start_index and (workdayIndex - start_index) % employee_count == employeeIndex %}
                    <td>x</td>
                {% else %}
                    <td></td>
                {% endif %}
            {% endfor %}
        </tr>
    {% endfor %}
{% endif %}

逻辑解释

  1. 预定义变量:先算出员工总数employee_count(避免重复计算),再定义start_index为2——因为你说第一个X从第3列开始,而Twig的循环索引是从0开始的,所以第3列对应索引2。
  2. 重复规律判断:
    • workdayIndex >= start_index:确保只从第3列开始画X
    • (workdayIndex - start_index) % employee_count == employeeIndex:这是核心逻辑——把当前工作日索引减去起始索引后,对员工总数取模,如果等于当前员工的索引,就画X。这样每过employee_count个工作日,规律就会重复一次,完美实现你要的“从14开始按相同规律向下排列”的效果。

举个例子:假设员工总数是11(3到13刚好11个位置),那第14列对应索引13,(13-2)%11=11%11=0,对应第一个员工的X;第15列索引14,(14-2)%11=12%11=1,对应第二个员工的X,以此类推,完全符合你的需求。

如果之后需要调整起始位置或者限制轮数,只需要修改start_index或者在判断条件里加额外的限制(比如(workdayIndex - start_index) // employee_count < 3来限制最多3轮)就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:07:49