Twig If语句在for循环开始标记中

我有这段代码,该代码应该用于计算从对象检索的for循环中的项目。 这段代码在带有PHP 7.2.5和Twig-Bundle 5.0的symfony 5.0项目上运行

{% set sent_mails = 0 %}

 {% for email in emails if email.status == 1 %}
    {% set sent_mails = (sent_mails + 1) %}
 {% endfor %}

{{ sent_mails }}

并显示以下错误:

Twig If语句在for循环开始标记中

当我使用php 7.1.3和twig-bundle 4.2在Symfony 4.2上运行相同的代码时,一切正常,没有错误。

Twig If语句在for循环开始标记中

我未正确使用的树枝束代码语法有什么变化或我缺少什么?

hd7429 回答:Twig If语句在for循环开始标记中

尝试一下:

{% set sent_mails = 0 %}

{% for email in emails %}
    {% if email.status == 1 %}
        {% set sent_mails = (sent_mails + 1) %}
    {% endif %}
{% endfor %}

{{ sent_mails }}
,

不建议在if中使用for

  

在第1行的“ main.twig”中的“ for”标签上使用“ if”条件是   从Twig 2.10.0开始不推荐使用,请使用“过滤器”过滤器或“如果”   相反,“ for”体内的情况(如果您的情况取决于   一个在循环内更新的变量)。

source

,

我找到了一种使用Twitter用户@dbrumann建议的过滤器来实现此目标的方法。

{% set sent_mails = 0 %}
   {% for email in emails|filter(email => email.status == 1) %}
    {% set sent_mails = (sent_mails + 1) %}
   {% endfor %}

{{ sent_mails }}
本文链接:https://www.f2er.com/2987023.html

大家都在问