多条件 IF

看来我对树枝的 if 语句有疑问。

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

但如果也失败了。

然后试了这个:

{% set count1 = fields | length > 0 %}
{% set count2 = trans_fields | length > 0 %}
{%if count1 || count2 -%}

但还是没用,每次都是同样的错误。

所以... 这让我想到一个非常简单的问题: Twig 支持多种条件 IF 吗?

266617 次浏览

如果我没记错的话,Twig 不支持 ||&&操作符,但是要求分别使用 orand。我还会使用括号来更清楚地表示这两个语句,尽管从技术上来说这并不是一个必要条件。

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

在多种情况下使用 !=对我来说也不起作用,但是 ==起作用了——实际上这看起来像是一个错误。

可能的工作。

{% if key not in ['string1', 'string2'] %}
// print something
{% endif %}