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.