存储Twig循环以进行多次重用

时间:2014-02-04 20:02:37

标签: for-loop twig template-engine

我有两个循环遍历的数组,但它们是嵌套的。 减少到最低限度,它看起来像这样:

{% for item in items %}
    <label>{{ item.name }}</label>

    <select>
    {% for attribute in attributes %}
        <option>{{ attribute.name }}</option>
    {% endfor %}
    </select>

{% endfor %}

问题是数组的大小。大约有1,100 items和400 attributes。可以猜测,这很慢。很慢。

是否可以“存储”内部循环,只重用生成/渲染的块?

1 个答案:

答案 0 :(得分:0)

将内循环移动到外循环之外,然后存储在Twig变量中生成的值。然后运行外部循环,在<select>标记之间提供变量。这样,您只需生成一次内循环。

{% set options = '' %}
{% for attribute in attributes %}
    {% set options = options ~ '<option>' ~ attribute.name ~ '</option>' %}
{% endfor %}

{% for item in items %}
    <label>{{ item.name }}</label>
    <select>
        {{ options }}
    </select>
{% endfor %}