我有两个循环遍历的数组,但它们是嵌套的。 减少到最低限度,它看起来像这样:
{% 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
。可以猜测,这很慢。很慢。
是否可以“存储”内部循环,只重用生成/渲染的块?
答案 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 %}