Тернарные операторы в Twig php (сокращенная форма if-then-else)

Можно ли использовать тройные операторы в шаблоне ветви? Теперь для добавления некоторого класса в элемент DOM зависит от некоторого условия, которое я делаю следующим образом:

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

Вместо

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

в встроенном шаблоне шаблонов php.

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

Тернарный оператор документирован под « другими операторами »,

Вы можете использовать сокращенный синтаксис с Twig 1.12.0

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

Тройной оператор ( ?:

Поддержка расширенного тернарного оператора была добавлена ​​в Twig 1.12.0 .

  1. Дело 1

    Snippet:

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

    Оценивает:

    if foo echo yes else echo no


  2. Случай №2

    Snippet:

     {{ foo ?: 'no' }} 

    или

     {{ foo ? foo : 'no' }} 

    Оценивает:

    если foo echo it, else echo no


  3. Случай №3

    Snippet:

     {{ foo ? 'yes' }} 

    или

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

    Оценивает:

    if foo echo yes else echo nothing


Оператор нулевой коалесценции ( ?? )

  1. Дело 1

    Snippet:

     {{ foo ?? 'no' }} 

    Оценивает:

    Возвращает значение foo если оно определено, а не null , иначе

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