Operator trójskładnikowy Twig, skrótowy jeśli-to-jeszcze

149

Czy Twig obsługuje operatora trójskładnikowego?

Potrzebuję logiki warunkowej, takiej jak:

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

ale używając skrótu w Twig.

Meliborn
źródło
Czy mógłbyś rozważyć zmianę zaakceptowanej odpowiedzi? Myślę, że mój jest bardziej wszechstronny i przydatny dla społeczności, ponieważ obejmuje wszystkie rodzaje skrótów, jeśli jest w Twig.
Pmpr

Odpowiedzi:

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

Operator trójskładnikowy jest udokumentowany w kategorii „ inne podmioty

Ben Swinburne
źródło
1
Jest to bardzo pomocne w sytuacjach takich jak oznaczanie przycisku lub elementu jako aktywnego dla bieżącej strony.
Vahid Amiri
Jeśli PRAWDA, jak podchodzisz do możliwości drukowania .id? (w miejsce „wybrane”).
gdaniel,
1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
Ben Swinburne,
dzięki. Miałem problemy z drukowaniem zmiennych twig podczas korzystania z wbudowanych warunków warunkowych. Spróbuję.
gdaniel,
Zastanawiam się, czy to powinno być w stanie pracować w tekście, aby dodać wartość atrybutu, taką jak klasa css? Wydaje mi się, że to nie działa: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- chcę dodać tutaj klasę css na podstawie warunku.
Jordania
114

Możesz używać skróconej składni od Twig 1.12.0

{{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
{{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}
mgalic
źródło
82

Wsparcie dla rozszerzonego operatora trójskładnikowego zostało dodane w Twig 1.12.0 .

  1. Jeśli fooecho yeselse echo no:

    {{ foo ? 'yes' : 'no' }}
  2. Jeśli footo echo, w przeciwnym razie echo no:

    {{ foo ?: 'no' }}

    lub

    {{ foo ? foo : 'no' }}
  3. Jeśli fooecho yeselse nic nie odzwierciedla:

    {{ foo ? 'yes' }}

    lub

    {{ foo ? 'yes' : '' }}
  4. Zwraca wartość, foojeśli jest zdefiniowana i nie ma wartości null , w noprzeciwnym razie:

    {{ foo ?? 'no' }}
  5. Zwraca wartość, foojeśli jest zdefiniowana ( liczą się również puste wartości), w noprzeciwnym razie:

    {{ foo|default('no') }}
Pmpr
źródło