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.
{{ (ability.id in company_abilities) ? 'selected' : '' }}
L'opérateur ternaire est documenté sous ' autres opérateurs '
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' : '' }}
?:
)La prise en charge de l'opérateur ternaire étendu a été ajoutée dans Twig 1.12..
Cas 1
Snippet:
{{ foo ? 'yes' : 'no' }}
évalue:
si
foo
echoyes
sinon echono
Cas n ° 2
Snippet:
{{ foo ?: 'no' }}
ou
{{ foo ? foo : 'no' }}
évalue:
si
foo
écho, sinon echono
Cas n ° 3
Snippet:
{{ foo ? 'yes' }}
ou
{{ foo ? 'yes' : '' }}
évalue:
si
foo
echoyes
sinon rien echo
??
)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 ''
.