Ternaire opérateurs dans Twig php (forme Abrégée de si-alors-sinon)

Est-il possible d'utiliser des opérateurs ternaires dans le modèle twig? Maintenant, pour ajouter une classe à L'élément DOM dépend d'une condition que je fais comme ceci:

{%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 modèle PHP natif.

96
demandé sur Trix 2012-08-06 01:41:54

3 réponses

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

L'opérateur ternaire est documentée dans 'autres opérateurs'

189
répondu Ben Swinburne 2012-08-05 21:51:14

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' : '' }}
83
répondu mgalic 2014-07-21 07:32:28

L'opérateur ternaire (?:)

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

  1. Cas # 1

    Extrait de Code:

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

    Évalue:

    Si foo echo yes else echo no


  2. Cas # 2

    Extrait de Code:

    {{ foo ?: 'no' }}
    

    Ou

    {{ foo ? foo : 'no' }}
    

    Évalue:

    Si foo l'écho, sinon l'écho no


  3. Cas # 3

    Extrait de Code:

    {{ foo ? 'yes' }}
    

    Ou

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

    Évalue:

    Si foo echo yes else echo rien


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

  1. Cas # 1

    Extrait de Code:

    {{ foo ?? 'no' }}
    

    Évalue:

    Retourne la valeur de foo si est définie et pas null, no sinon

Note: {[23] } ceci est légèrement différent de {{ foo|default('no') }}, puisque ce dernier sera également déclenché à partir de valeurs vides comme ''.

49
répondu Trix 2017-10-30 20:07:16