Opérateur ternaire Twig, raccourci if-then-else

149

Twig prend-il en charge l'opérateur ternaire?

J'ai besoin d'une logique conditionnelle comme:

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

mais en utilisant la sténographie dans Twig.

Meliborn
la source
Pourriez-vous s'il vous plaît envisager de modifier la réponse acceptée? Je pense que le mien est plus complet et utile à la communauté car il couvre tous les types de sténographie si dans Twig.
Pmpr

Réponses:

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

L'opérateur ternaire est documenté sous `` autres opérateurs ''

Ben Swinburne
la source
1
Ceci est très utile dans des situations telles que le marquage d'un bouton ou d'un élément comme actif pour la page en cours.
Vahid Amiri le
Si VRAI, comment allez-vous imprimer ability.id? (au lieu de "sélectionné").
gdaniel
1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
Ben Swinburne
Merci. J'ai eu des problèmes pour imprimer des variables de brindilles à l'intérieur de conditionnelles en ligne. Je veux bien essayer.
gdaniel
Je me demande si cela est censé pouvoir fonctionner en ligne pour ajouter une valeur d'attribut comme une classe css? Cela ne semble pas fonctionner pour moi: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- vouloir ajouter une classe css ici en fonction de la condition.
Jordanie
114

Vous pouvez utiliser la syntaxe abrégée à partir de Twig 1.12.0

{{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
{{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}
mgalic
la source
82

La prise en charge de l'opérateur ternaire étendu a été ajoutée dans Twig 1.12.0 .

  1. Si fooecho yeselse echo no:

    {{ foo ? 'yes' : 'no' }}
  2. Si l' fooécho, sinon l'écho no:

    {{ foo ?: 'no' }}

    ou

    {{ foo ? foo : 'no' }}
  3. Si fooecho yeselse ne fait écho à rien:

    {{ foo ? 'yes' }}

    ou

    {{ foo ? 'yes' : '' }}
  4. Renvoie la valeur de foosi elle est définie et non nulle , nosinon:

    {{ foo ?? 'no' }}
  5. Renvoie la valeur de foosi elle est définie ( les valeurs vides comptent également), nosinon:

    {{ foo|default('no') }}
Pmpr
la source