it-swarm.com.ru

Тернарные операторы в 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 повторить его, иначе echo no


  3. Дело № 3

    Сниппет:

    {{ foo ? 'yes' }}
    

    или же

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

    Оценивает:

    если foo echo yes иначе echo ничто


Нулевой коалесцирующий оператор (??)

  1. Случай 1

    Сниппет:

    {{ foo ?? 'no' }}
    

    Оценивает:

    Возвращает значение foo, если оно определено и не ноль, no в противном случае

Примечание: это немного отличается от {{ foo|default('no') }}, так как последний будет запускаться также из пустых значений, таких как ''.

66
Pmpr