ti-enxame.com

galho: SE com múltiplas condições

Parece que tenho problema com uma declaração twig if.

{%if fields | length > 0 || trans_fields | length > 0 -%}

O erro é:

Unexpected token "punctuation" of value "|" ("name" expected) in 

Eu não consigo entender porque isso não funciona, é como se o twig fosse perdido com todos os tubos.

Eu tentei isso:

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

mas o if também falha.

Então tentei isso:

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

E ainda não funciona, o mesmo erro toda vez ...

Então ... isso me leva a uma pergunta bem simples: Twig suporta múltiplas condições SE?

110
FMaz008

Se bem me lembro Twig não suporta os operadores || e &&, mas requer que or e and sejam usados ​​respectivamente. Eu também usaria parênteses para denotar as duas declarações mais claramente, embora isso não seja tecnicamente um requisito.

{%if ( fields | length > 0 ) or ( trans_fields | length > 0 ) %}

Expressões

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.

Para operações mais complexas, pode ser melhor envolver expressões individuais entre parênteses para evitar confusão:

{% if (foo and bar) or (fizz and (foo + bar == 3)) %}
274
Ben Swinburne