Twig三項演算子、省略形のif-then-else


149

Twigは三項演算子をサポートしていますか?

次のような条件付きロジックが必要です。

{%if ability.id in company_abilities %}
    <tr class="selected">
{%else%}
    <tr>
{%endif%}

しかし、Twigでは省略形を使用します。


受け入れられた回答を変更することを検討していただけませんか?私はTwigの場合、すべてのタイプの速記をカバーしているので、コミュニティにとってより包括的で便利だと思います。
Pmpr

回答:


294
{{ (ability.id in company_abilities) ? 'selected' : '' }}

三項演算子は「他の演算子」の下に文書化されています


1
これは、ボタンまたはアイテムを現在のページでアクティブとしてマークするような状況で非常に役立ちます。
Vahid Amiri 2016

TRUEの場合、capability.idをどのように印刷しますか?(「選択された」の代わりに)。
gdaniel 2016

1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
ベンスウィンバーン、

ありがとう。インライン条件文の内部で小枝変数を出力する際に​​問題が発生しています。これをやってみます。
gdaniel 16

これはCSSクラスのような属性値を追加するためにインラインで動作するはずだと思いますか?私にはうまくいかないようです:<div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- ここに条件に基づいてcssクラスを追加したい。
ヨルダン

114

Twig 1.12.0以降では、短縮構文を使用できます

{{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
{{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}

82

拡張三項演算子のサポートは、Twig 1.12.0で追加されました

  1. もしfooエコーyes他のエコーno

    {{ foo ? 'yes' : 'no' }}
  2. fooエコーする場合は、エコーしますno

    {{ foo ?: 'no' }}

    または

    {{ foo ? foo : 'no' }}
  3. fooエコーする場合yes、エコーしない場合:

    {{ foo ? 'yes' }}

    または

    {{ foo ? 'yes' : '' }}
  4. 定義されいてnullはないfoo場合はの値を返し、それ以外の場合は次の値を返します。no

    {{ foo ?? 'no' }}
  5. 定義されているfoo場合は値を返します(空の値もカウントされます)。それ以外の場合:no

    {{ foo|default('no') }}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.