Тернарные операторы в 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.

1072   5  

5 ответов:

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

тернарный оператор задокументирован под 'других операторов'

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

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

тернарный оператор (?:)

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

  1. дело №1

    фрагмент:

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

    оценка:

    если foo Эхо yes еще эхо no


  2. случае #2

    фрагмент:

    {{ foo ?: 'no' }}
    

    или

    {{ foo ? foo : 'no' }}
    

    оценка:

    если foo эхо это, иначе Эхо no


  3. дело № 3

    фрагмент:

    {{ foo ? 'yes' }}
    

    или

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

    оценка:

    если foo Эхо yes другое Эхо ничего


нуль-коалесцирующий оператор (??)

  1. дело №1

    фрагмент:

    {{ foo ?? 'no' }}
    

    оценка:

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

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

Comments

  1. Сергей
    Сергей 4 года назад
    <p>А что означает <em><strong>знак процента</strong></em> перед setCo  в этой конструкции {% if products|length <strong>%</strong> setCol != 0 %} ?</p>
  2. Сергей Fortoo
    Сергей Fortoo 3 года назад
    <p>А вот так можно<br /><strong>if</strong><br /><em>ваш код....</em><br /><strong>ifelse</strong><br /><em>ваш код....</em><br /><strong>else</strong></p>

    <pre>
    <code class="language-php">{{ foo == 'total' ? 'Общая стоимость' : (foo == 'shipping' ? 'Доставка' : 'no') }}</code></pre>

    <p> </p>