小枝:複数の条件があるIF


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

しかし、も失敗します。

次にこれを試しました:

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

そして、それはまだ機能しません、毎回同じエラー...

それで...それは私を本当に単純な質問に導きます:Twigは複数の条件IFをサポートしますか?

回答:


287

私が正しくリコール小枝をサポートしていない||&&事業者が、必要とorしてand、それぞれ使用されるように。また、技術的には要件ではありませんが、括弧を使用して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)) %}

13
そしてもちろん、IFのドキュメントを調べたときに、時間を節約できるすばらしい表を見つける機会はありませんでした。twig.sensiolabs.org / doc / tags / if.html 解決策をありがとう!
FMaz008

5
彼らはコードをより徹底的に文書化するためにgithub上のwikiを使用する傾向があります。そのテーブルはここ
ベンスウィンバーン2011

!=を使用してもうまくいかなかったようです(バグかもしれませんか?):{%if(key!= 'string1')または(key!= 'string2')または(key!= 'string3')%}そのため、すべてに(key == 'stringN')を使用し、必要なものを 'else'ステートメントに入れなければなりませんでした
timhc22

not式を否定するには、演算子を使用する必要があります。
ベンスウィンバーン

1
三項演算子を忘れた?
ジョン・スミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.