Ramoscello operatore ternario, abbreviazione if-then-else


149

Twig supporta l'operatore ternario?

Ho bisogno di una logica condizionale come:

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

ma usando la scorciatoia in Twig.


Potresti per favore considerare di cambiare la risposta accettata? Penso che il mio sia più completo e utile per la comunità in quanto copre tutti i tipi di stenografia se in Twig.
Pmpr

Risposte:


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

L'operatore ternario è documentato sotto " altri operatori "


1
Questo è molto utile in situazioni come contrassegnare un pulsante o un elemento come attivo per la pagina corrente.
Vahid Amiri,

Se TRUE, come si fa a stampare abilità.id? (al posto di "selezionato").
gdaniel,

1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
Ben Swinburne,

Grazie. Ho avuto problemi con la stampa di variabili ramoscello all'interno di condizionali in linea. Ci proverò.
gdaniel,

Mi chiedo se questo dovrebbe essere in grado di funzionare in linea per aggiungere un valore di attributo come una classe CSS? Non sembra funzionare per me: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- voler aggiungere una classe CSS qui in base alla condizione.
Giordania,

114

È possibile utilizzare la sintassi abbreviata a partire da Twig 1.12.0

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

82

Il supporto per l'operatore ternario esteso è stato aggiunto in Twig 1.12.0 .

  1. Se fooecho yeselse echo no:

    {{ foo ? 'yes' : 'no' }}
  2. Se lo fa fooeco, altrimenti fa eco no:

    {{ foo ?: 'no' }}

    o

    {{ foo ? foo : 'no' }}
  3. Se fooecho yeselse non riecheggia nulla:

    {{ foo ? 'yes' }}

    o

    {{ foo ? 'yes' : '' }}
  4. Restituisce il valore di foose è definito e non è null , noaltrimenti:

    {{ foo ?? 'no' }}
  5. Restituisce il valore di foose è definito ( contano anche i valori vuoti ), noaltrimenti:

    {{ foo|default('no') }}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.