Respuestas:
Dependiendo de lo que necesita exactamente:
is nullcomprueba si el valor es null:
{% if var is null %}
{# do something #}
{% endif %}is defined comprueba si la variable está definida:
{% if var is not defined %}
{# do something #}
{% endif %}Además, la is sameasprueba, que realiza una comparación estricta de dos valores, puede ser de interés para verificar valores distintos de null(como false):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()función PHP , is defineddevolverá truesi se define una variable y su valor es nulo.
is_ sameasdebe verse Doc url => twig.symfony.com/doc/2.x/tests/sameas.html{% if var is same as(false) %}{% if var is sameas(false) %}
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 quieres que se muestre cuando sea nulo:
{{ my_var | default("") }}
undefined or emptyy null?
Sin ningún supuesto, la respuesta es:
{% if var is null %}
Pero esto será cierto solo si vares exactamente NULL, y no cualquier otro valor que evalúe false(como cero, cadena vacía y matriz vacía). Además, causará un error si varno 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 al defaultfiltro, se supone NULL(una especie de valor predeterminado predeterminado). Entonces, la forma más corta y segura (lo sé) de verificar si una variable está vacía (nulo, falso, cadena / matriz vacía, etc.):
{% if var|default is empty %}
No creo que puedas. Esto se debe a que si una variable no está definida (no establecida) en la plantilla de ramita, se ve como NULLo none(en términos de ramita). Estoy bastante seguro de que esto es para evitar que ocurran errores de acceso incorrecto 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";
}
¿Qué si su bueno en su tipo de malabares , significa que las cosas tales como 0, '', FALSE, NULL, y un var indefinido también hacer esa declaración verdadera.
Mi sugerencia es pedir que la identidad se implemente en Twig.
{if var is none}y cuál es el equivalente de PHP?
{% if abcxyz is none %}convierte if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; } if ((null === $_abcxyz_)) { echo "hi"; }. Básicamente, si el valor es indefinido o nulo, será cierto.
{% if var is empty %} twig.sensiolabs.org/doc/tests/empty.html que se traduce en PHP if (empty($var))que evalúa contra un valor de falsey ( !isset, null, 0, array(), "", false, "0", 0.0) php.net/manual/en/function.empty.php Puede también usar {% if var is same as(var) %}para identidad ( ===). 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.
{% if var is not null %}