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.


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 ''


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' : '' }}

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') }}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.