variable validate not endif empty elseif else check php twig short-circuiting

php - validate - ¿Cómo comprobar si hay nulo en Twig?



twig if variable is not set (7)

Cómo establecer valores predeterminados en twig: http://twig.sensiolabs.org/doc/filters/default.html

{{ my_var | default("my_var doesn''t exist") }}

O si no desea que se muestre cuando sea nulo:

{{ my_var | default("") }}

¿Qué construcción debo usar para verificar si un valor es NULL en una plantilla Twig?


Dependiendo de lo que necesitas exactamente:

  • is null verifica si el valor es null :

    {% if var is null %} {# do something #} {% endif %}

  • is defined verifica si la variable está definida:

    {% if var is not defined %} {# do something #} {% endif %}

Además, la prueba is sameas , que hace una comparación estricta de tipo de dos valores, podría ser interesante para verificar valores que no sean null (como false ):

{% if var is sameas(false) %} {# do something %} {% endif %}


No creo que puedas. Esto se debe a que si una variable no está definida (no está establecida) en la plantilla de ramita, se ve como NULL o none (en términos de ramita). Estoy bastante seguro de que esto es para evitar que se produzcan errores de acceso incorrectos en la plantilla.

Debido a la falta de una "identidad" en Twig ( === ) esto es lo mejor que puedes hacer

{% if var == null %} stuff in here {% endif %}

Lo que se traduce en:

if ((isset($context[''somethingnull'']) ? $context[''somethingnull''] : null) == null) { echo "stuff in here"; }

Lo que si es bueno para su malabarismo de tipo , significa que cosas como 0 , '''' , FALSE , NULL y una var indefinida también harán que esa afirmación sea cierta.

Mi sugerencia es pedir que la identidad sea implementada en Twig.


Sin ningún supuesto, la respuesta es:

{% if var is null %}

Pero esto será cierto solo si var es exactamente NULL , y no cualquier otro valor que se evalúe como false (como cero, cadena vacía y matriz vacía). Además, causará un error si var no está definido. Una forma más segura sería:

{% if var is not defined or var is null %}

que se puede acortar a:

{% if var|default is null %}

Si no proporciona un argumento para el filtro default , se asume que es NULL (tipo de valor predeterminado predeterminado). Así que la forma más corta y segura (lo sé) de verificar si una variable está vacía (nula, falsa, cadena / matriz vacía, etc.):

{% if var|default is empty %}


También puedes usar una línea para hacer eso:

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


puede utilizar el siguiente código para comprobar si

{% if var is defined %} var is variable is SET {% endif %}


//test if varibale exist {% if var is defined %} //todo {% endif %} //test if variable is not null {% if var is not null %} //todo {% endif %}