树枝:IF有多种条件

FMa*_*008 114 php conditional-operator twig

似乎我有一个问题,如果声明.

{%if fields | length > 0 || trans_fields | length > 0 -%}
Run Code Online (Sandbox Code Playgroud)

错误是:

Unexpected token "punctuation" of value "|" ("name" expected) in 
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么这不起作用,就像是因为所有管道都丢失了枝条.

我试过这个:

{% set count1 = fields | length %}
{% set count2 = trans_fields | length %}
{%if count1 > 0 || count2 > 0 -%}
Run Code Online (Sandbox Code Playgroud)

但是如果也失败了.

然后尝试了这个:

{% set count1 = fields | length > 0 %}
{% set count2 = trans_fields | length > 0 %}
{%if count1 || count2 -%}
Run Code Online (Sandbox Code Playgroud)

它仍然不起作用,每次都是同样的错误......

所以...这引出了一个非常简单的问题:Twig是否支持多种条件?

Ben*_*rne 281

如果我没记错,Twig不支持||&&运营商,但需要orand分别使用.我还会使用括号来更清楚地表示这两个陈述,尽管这在技术上并不是一个要求.

{%if ( fields | length > 0 ) or ( trans_fields | length > 0 ) %}
Run Code Online (Sandbox Code Playgroud)

表达式

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.
Run Code Online (Sandbox Code Playgroud)

对于更复杂的操作,最好将单个表达式括在括号中以避免混淆:

{% if (foo and bar) or (fizz and (foo + bar == 3)) %}
Run Code Online (Sandbox Code Playgroud)

  • 运营商也区分大小写.或不起作用. (17认同)
  • 当然,在查看IF文档时,我没有机会找到这个精彩且省时的表:http://twig.sensiolabs.org/doc/tags/if.html感谢您的解决方案! (13认同)
  • 他们倾向于使用github上的wiki来更全面地记录他们的代码.该表来自[here](https://github.com/vito/chyrp/wiki/Twig-Reference) (5认同)