【问题标题】:Store Twig loop for multiple reuse存储 Twig 循环以供多次重复使用
【发布时间】:2014-02-04 20:02:36
【问题描述】:

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

{% 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。可以猜到,这很慢。很慢。

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

【问题讨论】:

  • 哦,对不起。我为这个问题设置了电子邮件信息,但没有得到。我今天下班后试试。我一直在寻找类似的东西,但我看起来很有希望。今天晚些时候,我会告诉你这对我有用。

标签: for-loop twig template-engine


【解决方案1】:

将内循环移到外循环之外,然后将生成的值存储在 Twig 变量中。然后运行外部循环,提供&lt;select&gt; 标签之间的变量。这样你只生成一次内部循环。

{% 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 %}

【讨论】:

  • 非常感谢,这就是我正在寻找的答案。我必须更改的两件小事:{{ options }}} 一个太多的大括号,由于 var 是 html 代码,我必须设置“var”过滤器:{{ options|var }}
  • doh 错字,PhpStorm 自动补全花括号,我把它们同时放入,已修复。
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 2021-06-14
相关资源
最近更新 更多