for循环开始标记中的Twig If语句
我有一段代码,用来计算从对象检索到的for循环中的项目。 这段代码运行在带有PHP7.2.5和twig bundle 5.0的symfony 5.0项目上for循环开始标记中的Twig If语句,twig,php-7.2,symfony5,Twig,Php 7.2,Symfony5,我有一段代码,用来计算从对象检索到的for循环中的项目。 这段代码运行在带有PHP7.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 }} 它给出了以下错误: 当我使用PHP7.1
{% set sent_mails = 0 %}
{% for email in emails if email.status == 1 %}
{% set sent_mails = (sent_mails + 1) %}
{% endfor %}
{{ sent_mails }}
它给出了以下错误:
当我使用PHP7.1.3和twig bundle 4.2在Symfony 4.2上运行相同的代码时,一切正常
小枝束代码语法是否有任何未正确使用的更改或缺少的内容?尝试以下操作:
{% set sent_mails = 0 %}
{% for email in emails %}
{% if email.status == 1 %}
{% set sent_mails = (sent_mails + 1) %}
{% endif %}
{% endfor %}
{{ sent_mails }}
如果不推荐在
for
中使用:
在第1行的“main.twig”中为“tag”使用“if”条件是错误的
自Twig 2.10.0以来已弃用,请使用“过滤器”过滤器或“如果”
改为“for”主体内的状态(如果您的状态取决于
循环内更新的变量)
我找到了一种方法,通过使用Twitter用户@dbrumann推荐的过滤器来实现这一点
{% set sent_mails = 0 %}
{% for email in emails|filter(email => email.status == 1) %}
{% set sent_mails = (sent_mails + 1) %}
{% endfor %}
{{ sent_mails }}
是的,这会起作用,但这是一种干净有效的方法吗?什么是无效的?你有一个循环和一个条件来知道你发送了多少邮件,出了什么问题?这里还有一个与您类似的问题:只需将IF放在自己的指令“symfony/twig bundle”中,即composer.json中的“5.0.*”,这就是我说twig bundle 5.0的原因