web-dev-qa-db-fra.com

Comment vérifier pour null dans Twig?

Quelle construction dois-je utiliser pour vérifier si une valeur est NULL dans un modèle Twig?

268
Fluffy

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 %}
_
499
NikiC

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("") }}
122
lax4mike

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 %}
33
Jamol

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.

7
Kendall Hopkins
     //test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

     //test if variable is not null
     {% if var is not null %}
         //todo
     {% endif %}
5
thepaulo

vous pouvez utiliser le code suivant pour vérifier si

{% if var is defined %}

var is variable is SET

{% endif %}
3
M.M.H.Masud

Vous pouvez également utiliser une ligne pour le faire:

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
2
xavit