Réponses:
Selon ce dont vous avez besoin exactement:
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 is sameas
test, qui fait une comparaison stricte de type de deux valeurs, pourrait être intéressant pour vérifier des valeurs autres que null
(comme false
):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()
fonction PHP , is defined
retournera true
si une variable est définie et sa valeur est nulle.
is_ sameas
il {% if var is same as(false) %}
ne faut pas {% if var is sameas(false) %}
voir Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
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 souhaitez pas qu'il s'affiche lorsqu'il est nul:
{{ my_var | default("") }}
undefined or empty
et null
?
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 évaluée false
(comme zéro, chaîne vide et tableau vide). En outre, cela provoquera une erreur s'il var
n'est pas défini. Un moyen plus sûr serait:
{% if var is not defined or var is null %}
qui peut être raccourci à:
{% if var|default is null %}
Si vous ne fournissez pas d'argument au default
filtre, il suppose NULL
(sorte de valeur par défaut 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 / tableau vide, etc.):
{% if var|default is empty %}
Je ne pense pas que vous puissiez. En effet, si une variable n'est pas définie (non définie) dans le modèle de brindille, elle ressemble à NULL
ounone
(en termes de brindille). Je suis sûr que c'est pour empêcher les erreurs d'accès incorrectes de se produire 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";
}
Qui , si votre bien à votre jonglerie de type signifie que les choses telles que 0
, ''
,FALSE
, NULL
et un var non définie également cette déclaration vrai.
Ma suggestion est de demander que l'identité soit implémentée dans Twig.
{if var is none}
et quel est l'équivalent PHP?
{% if abcxyz is none %}
devient if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
. Donc, fondamentalement, si la valeur n'est pas définie ou nulle, ce sera vrai.
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.html qui se traduit par PHP if (empty($var))
qui évalue par rapport à une valeur de falsey ( !isset, null, 0, array(), "", false, "0", 0.0
) php.net/manual/en/function.empty.php Vous pouvez également utilisé {% if var is same as(var) %}
pour l'identité ( ===
). twig.sensiolabs.org/doc/tests/sameas.html
//test if varibale exist
{% if var is defined %}
//todo
{% endif %}
//test if variable is not null
{% if var is not null %}
//todo
{% endif %}
if var is not null
.
De plus, si votre variable est un TABLEAU , il y a aussi peu d'options:
{% if arrayVariable[0] is defined %}
#if variable is not null#
{% endif %}
OU
{% if arrayVariable|length > 0 %}
#if variable is not null#
{% endif %}
Cela ne fonctionnera que si votre tableau is defined
ET estNULL
{% if var is not null %}