Twig Can';t重复“t”;“过滤器”;多次过滤

Twig Can';t重复“t”;“过滤器”;多次过滤,twig,twig-filter,Twig,Twig Filter,我试图将“过滤器”过滤器的结果(从Twig 2.10开始提供)分配给一个变量,以便我可以多次使用它: {% set filtered = collection|filter(element => element.ok) %} 但不幸的是,如果我尝试对它进行多次迭代(使用“长度”过滤器计数),就会得到错误 无法遍历已关闭的生成器 在第一次之后。错误很明显,“filter”实际上返回一个生成器(我相信不能多次迭代),而不是数组或集合 问题在于,它使编写以下代码变得不可能,例如: {% if

我试图将“过滤器”过滤器的结果(从Twig 2.10开始提供)分配给一个变量,以便我可以多次使用它:

{% set filtered = collection|filter(element => element.ok) %}
但不幸的是,如果我尝试对它进行多次迭代(使用“长度”过滤器计数),就会得到错误

无法遍历已关闭的生成器

在第一次之后。错误很明显,“filter”实际上返回一个生成器(我相信不能多次迭代),而不是数组或集合

问题在于,它使编写以下代码变得不可能,例如:

{% if filtered|length > 0 %}
<ul>
  {% for element in filtered %}
      <li>{{ element }}</li>
  {% endfor %}
</ul>
{% endif %}
{%if filtered | length>0%}
    {已筛选%%中的元素的%}
  • {{element}}
  • {%endfor%}
{%endif%}
此代码将触发for循环上的上述错误

我可以对原始集合进行重新筛选,而不是使用变量,但如果它包含大量元素,这似乎不是最佳选择。 我也想过写我自己的过滤器,把原来的包装起来,但如果不这样做的话,我会活得更好

还有更好的事要做吗?这是否应该被视为一个小错误(在这种情况下,我将在他们的回购协议中打开一个问题)

请注意,它没有表现出这种奇怪的行为,但与Twig 2.10不兼容

谢谢

那确实是一个,现在是

那确实是一个,现在是