184 votes

Opérateur ternaire Twig, abrégé if-then-else

Twig supporte-t-il l'opérateur ternaire (abréviation de if-else) ?

J'ai besoin d'une logique conditionnelle comme :

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

mais en utilisant des raccourcis dans Twig.

353voto

Ben Swinburne Points 6771
{{ (ability.id in company_abilities) ? 'selected' : '' }}

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

2 votes

Cette fonction 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.

1 votes

Si VRAI, comment faire pour imprimer ability.id ? (à la place de "selected").

2 votes

@gdaniel {{ (ability.id in company_abilities) ? ability.id : '' }}

134voto

mgalic Points 71

Vous pouvez utiliser une 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' : '' }}

110voto

Trix Points 9647

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

  1. Si foo echo yes else echo no :

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

    {{ foo ?: 'no' }}

    ou

    {{ foo ? foo : 'no' }}
  3. Si foo echo yes else echo nothing :

    {{ foo ? 'yes' }}

    ou

    {{ foo ? 'yes' : '' }}
  4. Renvoie la valeur de foo si c'est le cas défini et non nul , no autrement :

    {{ foo ?? 'no' }}
  5. Renvoie la valeur de foo si c'est le cas défini ( vide comptent également), no autrement :

    {{ foo|default('no') }}

4voto

L3xpert Points 169

Si le prix existe dans la base de données, par exemple, alors l'impression (Le prix est $$$), sinon l'impression (Non disponible) et ~ pour la concaténation dans Twig .

{{ Price ? 'Price is '~Price : 'Not Available' }}

3 votes

Si Price est égal à 0, il sera évalué à false et affichera "Non disponible" au lieu de 0, n'est-ce pas ?

1 votes

J'ai changé pour est défini

1voto

WebMan Points 171

J'ai juste utilisé a comme nom de variable générale. Vous pouvez également utiliser des if else sans fin comme ceci :

{{ a == 1 ? 'first' : a == 2 ? 'second' : 'third' }}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X