web-dev-qa-db-ja.com

Twig php(if-then-elseの短縮形)の三項演算子

twigテンプレートで三項演算子を使用できますか?さて、いくつかのクラスをDOM要素に追加するには、いくつかの条件に依存します。

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

の代わりに

<tr class="<?=in_array($ability->id, $company_abilities) ? 'selected' : ''?>">

ネイティブphpテンプレートエンジン。

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

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

236
Ben Swinburne

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

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

三項演算子(?:

拡張三項演算子のサポートがTwig 1.12.に追加されました。

  1. 事例#1

    スニペット:

    {{ foo ? 'yes' : 'no' }}
    

    評価:

    if foo echo yes else echo no


  2. ケース#2

    スニペット:

    {{ foo ?: 'no' }}
    

    または

    {{ foo ? foo : 'no' }}
    

    評価:

    fooをエコーする場合、そうでない場合はnoをエコーし​​ます


  3. ケース#3

    スニペット:

    {{ foo ? 'yes' }}
    

    または

    {{ foo ? 'yes' : '' }}
    

    評価:

    if foo echo yes else echo何もエコーしません


ヌル結合演算子(??

  1. 事例#1

    スニペット:

    {{ foo ?? 'no' }}
    

    評価:

    定義済みおよびnull以外の場合はfooの値を返し、それ以外の場合はnoを返します

注:これは{{ foo|default('no') }}とは少し異なります。後者は''のような空の値からもトリガーされるためです。

66
Pmpr