¿Qué construcción debo usar para verificar si un valor es NULL en una plantilla de Twig?¿Cómo comprobar null en Twig?
Respuesta
Dependiendo de qué es exactamente lo que necesita:
is null
comprueba si el valor esnull
:{% if var is null %} {# do something #} {% endif %}
is defined
comprueba si se define la variable:{% if var is not defined %} {# do something #} {% endif %}
Además la prueba is sameas
, que hace una comparación estricta tipo de dos valores, puede ser de interés para la comprobación de los valores distintos de 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 establecida) en la plantilla twig, se ve como NULL
o none
(en términos twig). Estoy bastante seguro de que esto es para evitar que se produzcan errores de acceso incorrecto en la plantilla.
Debido a la falta de una "identidad" en la ramita (===
) este es el mejor que puede hacer
{% if var == null %}
stuff in here
{% endif %}
que se traduce en:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
¿Qué si su bueno en su type juggling , significa que cosas como 0
, ''
, FALSE
, NULL
, y una var indefinida también harán que esa afirmación sea verdadera.
Mi sugerencia es solicitar la implementación de la identidad en Twig.
Kendall tiene razón al sugerir que lo implementen. No he tenido más que buenas experiencias pidiendo que se implementen cosas en el rastreador de problemas github de Twig. Son muy amigables y profesionales. – Shabbyrobe
@ kendall-hopkins Tengo curiosidad, ¿cuándo es apropiado usar '{if var is none}' y cuál es el equivalente de PHP? – noisebleed
@noisebleed '{% if abcxyz is none%}' se convierte en 'if (isset ($ context [" abcxyz "])) {$ _abcxyz_ = $ context [" abcxyz "]; } else {$ _abcxyz_ = null; } ' ' if ((null === $ _abcxyz_)) {echo "hi"; } ' Entonces, básicamente, si el valor es indefinido o nulo, será cierto. –
Cómo establecer valores por defecto en la rama: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
O si no desea que se muestre cuando nulo:
{{ my_var | default("") }}
Entonces, ¿diferencia entre 'indefinido o vacío' y' nulo'? – Fluffy
Parece que esta es la forma correcta de comprobar ... Es una pena que no tenga muchos votos ascendentes. –
Exactamente lo que estaba buscando. Tuve que asegurarme de que tienes | valor predeterminado, que luego puede intentar establecer el valor predeterminado para otra variable como así: {{my_var | predeterminado (my_var2)}} Acabo de probar, pero puede continuar encadenando de la siguiente manera: {{my_var | predeterminado (my_var2) | predeterminado ("my_var y my_var2 no existen")}} –
se puede utilizar el siguiente código para comprobar si
{% if var is defined %}
var is variable is SET
{% endif %}
Sin ninguna hipótesis, la respuesta es:
{% if var is null %}
Pero esto sólo será verdadera si var
es exactamente NULL
, y no cualquier otro valor que evalúa a 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 puede ser acortado a:
{% if var|default is null %}
Si usted no proporciona un argumento para el filtro default
, asume NULL
(tipo de defecto por defecto). Por lo que el camino más corto y más seguro (sé) para comprobar si una variable está vacía (nulo, falso, cadena vacía/matriz, etc):
{% if var|default is empty %}
//test if varibale exist
{% if var is defined %}
//todo
{% endif %}
//test if variable is not null
{% if var is not null %}
//todo
{% endif %}
¿Por qué cree que esta respuesta es mejor que la actualmente aceptada? –
¡Bienvenido a StackOverflow! ¿Cuál es la diferencia de la respuesta ya aceptada? ¿Está desactualizado? ¿Por qué tu respuesta es mejor que las ya existentes? – Artemix
@STTLCU Está incluyendo 'si var no es nulo'. – crmpicco
También puede utilizar una línea de hacerlo:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
- 1. PHP comprobar NULL
- 2. ios comprobar si NSArray == null
- 3. ¿Cómo escapar de los delimitadores Twig en una plantilla Twig?
- 4. Variables de Twig en twig variable
- 5. Redondeando números en Twig
- 6. str_replace en Twig
- 7. Cómo redondear un valor en Twig
- 8. ¿Cómo usar el volcado en TWIG?
- 9. Comprobar si la variable null antes de asignar a nulo?
- 10. secuencia contiene ningún error elementos pero quiero comprobar NULL
- 11. '...! = Null' o 'null! = ....' mejor rendimiento?
- 12. Twig addFilter using Silex?
- 13. Twig: render vs include
- 14. ¿Cómo comprobar NULL en una sentencia CASE con una función escalar?
- 15. Nombre del bloque dinámico en TWIG
- 16. Uso de javascript en Symfony2/Twig
- 17. Symfony2 Incluir en html en Twig
- 18. Cómo comprobar nulo en referencias anidadas
- 19. Cómo convertir null en 0
- 20. Symfony 2 + Twig variables globales
- 21. ¿Cómo accedo a la función Twig path() desde un controlador?
- 22. ¿Cómo obtener valores de una matriz multidimensional en Twig?
- 23. ¿Cómo incluir un archivo CSS en Symfony 2 y Twig?
- 24. ¿Cómo puedo obtener la URL o ruta actual en TWIG?
- 25. Prueba de igualdad de variables en twig
- 26. Inyectar Twig como un servicio en Symfony2
- 27. Configurar Twig Plugin en Aptana 3
- 28. Desactivar el escape en Symfony 2/twig
- 29. #define NULL NULL
- 30. Twig Empty Variable -> Exception?
Esta es ahora la respuesta correcta para twig –
Y para comprobar si algo no es nulo, simplemente haz '{% si var no es nulo%}' –
nota rápida que: $ var == null devolverá verdadero con $ var es 0, pero $ var es nulo devolverá falso – daSn0wie