web-dev-qa-db-fra.com

Opérateurs ternaires dans Twig php (forme abrégée de if-then-else)

Est-il possible d'utiliser des opérateurs ternaires dans le template twig? Maintenant, pour ajouter une classe à un élément DOM, cela dépend de certaines conditions:

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

Au lieu de

<tr class="<?=in_array($ability->id, $company_abilities) ? 'selected' : ''?>">

dans le moteur de template php natif.

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

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

257
Ben Swinburne

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

L'opérateur ternaire (?:)

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

  1. Cas 1

    Snippet:

    {{ foo ? 'yes' : 'no' }}
    

    évalue:

    si foo echo yes sinon echo no


  2. Cas n ° 2

    Snippet:

    {{ foo ?: 'no' }}
    

    ou

    {{ foo ? foo : 'no' }}
    

    évalue:

    si foo écho, sinon echo no


  3. Cas n ° 3

    Snippet:

    {{ foo ? 'yes' }}
    

    ou

    {{ foo ? 'yes' : '' }}
    

    évalue:

    si foo echo yes sinon rien echo


L'opérateur de coalescence nulle (??)

  1. Cas 1

    Snippet:

    {{ foo ?? 'no' }}
    

    évalue:

    Renvoie la valeur de foo s'il est défini et non nul, no sinon

Note: Ceci est légèrement différent de {{ foo|default('no') }}, puisque cette dernière sera également déclenchée par des valeurs vides comme ''.

70
Pmpr