1. ホーム
  2. php

[解決済み] twig: 複数の条件を持つIF

2022-06-05 16:55:47

質問

twigのif文に問題があるようです。

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

エラーは

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

なぜこれが動かないのか理解できない、まるでtwigが全てのパイプで失われたようだ。

私はこれを試しました.

{% 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をサポートしていますか?

どのように解決するのですか?

私の記憶が正しければ、Twig は ||&& 演算子が必要ですが orand をそれぞれ使用します。また、技術的には必須ではありませんが、2つのステートメントをより明確に示すために括弧を使用します。

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