나뭇 가지 : 여러 조건이있는 경우


120

나뭇 가지 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 -%}

그러나 if 또한 실패합니다.

그런 다음 이것을 시도했습니다.

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

그리고 여전히 작동하지 않으며 매번 같은 오류가 발생합니다 ...

그래서 ... 그건 정말 간단한 질문으로 이어집니다. Twig는 여러 조건 IF를 지원합니까?

답변:


287

내가 올바르게 기억 나뭇 가지 지원하지 않습니다 ||&&운영자 만이 필요 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)) %}

13
물론 IF 문서를 볼 때 훌륭하고 시간을 절약 할 수있는 표를 찾을 기회가 없었습니다. twig.sensiolabs.org/doc/tags/if.html 솔루션에 감사드립니다!
FMaz008 2011

5
그들은 코드를 더 철저히 문서화하기 위해 github의 위키를 사용하는 경향이 있습니다. 그 테이블은 여기
Ben Swinburne 2011

! =를 사용하는 것이 효과가없는 것 같았습니다 (버그 일 수 있습니까?) : {% if (key! = 'string1') 또는 (key! = 'string2') 또는 (key! = 'string3') %} 나는이 '다른'문에 필요한 것을 모두를 위해 (키 == 'stringN')를 사용하고 넣어했다, 그래서
timhc22

not표현식을 부정하려면 연산자 를 사용해야합니다 .
Ben Swinburne 2014

1
당신은 삼항 연산자 잊어?
존 스미스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.