web-dev-qa-db-fra.com

Existe-t-il une syntaxe abrégée Twig pour la sortie de texte conditionnel

Existe-t-il une syntaxe plus courte dans Twig pour générer une chaîne de texte conditionnelle?

<h1>{% if not info.id %}create{% else %}edit{% endif %}</h1>

Php traditionnel est encore plus facile que cela:

<h1><?php info['id']? 'create' : 'edit' ?></h1>
57
Justin

Cela devrait fonctionner:

{{ not info.id ? 'create' : 'edit' }}

En outre, cela s'appelle l'opérateur ternaire. C'est un peu caché dans la documentation: twig docs: operators

D'après leur documentation, la structure de base est la suivante:

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

Si vous devez comparer la valeur est égale à quelque chose que vous pouvez faire:

{{  user.role == 'admin' ? 'is-admin' : 'not-admin' }}

Vous pouvez utiliser l'opérateur Elvis dans twig:

{{  user ? 'is-user' }} 

{{  user ?: 'not-user' }} // note that it evaluates to the left operand if true ( returns the user ) and right if not
25
Raja Khoury

Le opérateur null-coalescing fonctionne également, comme par exemple:

{% set avatar = blog.avatar ?? 'https://example.dev/brand/avatar.jpg' %}
2
danigore