似乎我有一个问题,如果声明。
{%if fields | length > 0 || trans_fields | length > 0 -%}
错误是:
Unexpected token "punctuation" of value "|" ("name" expected) in
我无法理解为什么这不起作用,就好像所有管道都丢失了枝条。
我试过这个:
{% set count1 = fields | length %}
{% set count2 = trans_fields | length %}
{%if count1 > 0 || count2 > 0 -%}
但if也失败了。
然后尝试了这个:
{% set count1 = fields | length > 0 %}
{% set count2 = trans_fields | length > 0 %}
{%if count1 || count2 -%}
它仍然不起作用,每次都是同样的错误......
所以......这引出了一个非常简单的问题:Twig是否支持多种条件IF?
答案 0 :(得分:273)
如果我没记错,Twig不支持||
和&&
运算符,但需要分别使用or
和and
。我也会使用括号来更清楚地表示这两个陈述,尽管这在技术上并不是一个要求。
{%if ( fields | length > 0 ) or ( trans_fields | length > 0 ) %}
表达式
Expressions can be used in {% blocks %} and ${ expressions }.
Operator Description
== Does the left expression equal the right expression?
+ Convert both arguments into a number and add them.
- Convert both arguments into a number and substract them.
* Convert both arguments into a number and multiply them.
/ Convert both arguments into a number and divide them.
% Convert both arguments into a number and calculate the rest of the integer division.
~ Convert both arguments into a string and concatenate them.
or True if the left or the right expression is true.
and True if the left and the right expression is true.
not Negate the expression.
对于更复杂的操作,最好将单个表达式括在括号中以避免混淆:
{% if (foo and bar) or (fizz and (foo + bar == 3)) %}