Тернарные операторы в php Twig (сокращенная форма 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.
3 answers
{{ (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
Фрагмент:
{{ foo ? 'yes' : 'no' }}
Оценивает:
Если
foo
эхоyes
еще эхоno
-
Случай № 2
Фрагмент:
{{ foo ?: 'no' }}
Или
{{ foo ? foo : 'no' }}
Оценивает:
Если
foo
повторит это, еще эхоno
-
Случай № 3
Фрагмент:
{{ foo ? 'yes' }}
Или
{{ foo ? 'yes' : '' }}
Оценивает:
Если
foo
эхоyes
еще ничего не эхо
Оператор объединения нулей (??
)
-
Случай № 1
Фрагмент:
{{ foo ?? 'no' }}
Оценивает:
Возвращает значение
foo
, если оно определено и не равно нулю,no
в противном случае
Примечание: это немного отличается от {{ foo|default('no') }}
, так как последнее будет запускаться также из пустых значений, таких как ''
.