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.