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

나뭇 가지 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를 지원합니까?



답변

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


답변