Respuestas:
Dependiendo de lo que necesita exactamente:
is null
comprueba 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 sameas
prueba, 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 defined
devolverá true
si se define una variable y su valor es nulo.
is_ sameas
debe 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 empty
y null
?
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 evalúe 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 al default
filtro, 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 NULL
o 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 %}