Quelle construction dois-je utiliser pour vérifier si une valeur est NULL dans un modèle Twig?
En fonction de ce dont vous avez exactement besoin:
is null
vérifie si la valeur est null
:
_{% if var is null %}
{# do something #}
{% endif %}
_
is defined
vérifie si la variable est définie:
_{% if var is not defined %}
{# do something #}
{% endif %}
_
De plus, le test is sameas
, qui effectue une comparaison stricte de type de deux valeurs, peut être intéressant pour vérifier des valeurs autres que null
(comme false
):
_{% if var is sameas(false) %}
{# do something %}
{% endif %}
_
Comment définir les valeurs par défaut dans twig: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Ou si vous ne voulez pas qu'il affiche la valeur null:
{{ my_var | default("") }}
Sans aucune hypothèse, la réponse est:
{% if var is null %}
Mais cela ne sera vrai que si var
est exactement NULL
, et pas toute autre valeur ayant pour résultat false
(telle que zéro, chaîne vide et tableau vide). De plus, cela provoquera une erreur si var
n'est pas défini. Une manière plus sûre serait:
{% if var is not defined or var is null %}
qui peut être réduit à:
{% if var|default is null %}
Si vous ne fournissez pas d'argument au filtre default
, il suppose que NULL
(sorte de valeur par défaut). Donc, le moyen le plus court et le plus sûr (je sais) de vérifier si une variable est vide (null, false, chaîne vide/tableau, etc.):
{% if var|default is empty %}
Je ne pense pas que tu peux. En effet, si une variable est indéfinie (non définie) dans le modèle twig, elle ressemble à NULL
ou none
(en termes twig). Je suis presque sûr que c'est pour supprimer les erreurs d'accès incorrect dans le modèle.
En raison de l'absence d'une "identité" dans Twig (===
), c'est le mieux que vous puissiez faire.
{% if var == null %}
stuff in here
{% endif %}
Ce qui se traduit par:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Ce qui si votre bon à votre type jongler , signifie que des choses telles que 0
, ''
, FALSE
, NULL
, et une variable non définie vont faites aussi cette déclaration vraie.
Je suggère de demander que l'identité soit mise en œuvre dans Twig.
//test if varibale exist
{% if var is defined %}
//todo
{% endif %}
//test if variable is not null
{% if var is not null %}
//todo
{% endif %}
vous pouvez utiliser le code suivant pour vérifier si
{% if var is defined %}
var is variable is SET
{% endif %}
Vous pouvez également utiliser une ligne pour le faire:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}