Respostas:
Dependendo do que exatamente você precisa:
is null
verifica se o valor é null
:
{% if var is null %}
{# do something #}
{% endif %}
is defined
verifica se a variável está definida:
{% if var is not defined %}
{# do something #}
{% endif %}
Além disso, o is sameas
teste, que faz uma comparação estrita de dois valores, pode ser interessante para verificar valores diferentes de null
(como false
):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()
função PHP , is defined
retornará true
se uma variável for definida e seu valor for nulo.
is_ sameas
deve ser {% if var is same as(false) %}
não {% if var is sameas(false) %}
ver Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
Como definir valores padrão no twig: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Ou se você não deseja que seja exibido quando nulo:
{{ my_var | default("") }}
undefined or empty
e null
?
Sem nenhuma suposição, a resposta é:
{% if var is null %}
Mas isso será verdadeiro apenas se var
for exatamente NULL
, e não qualquer outro valor que seja avaliado false
(como zero, cadeia vazia e matriz vazia). Além disso, causará um erro se var
não estiver definido. Uma maneira mais segura seria:
{% if var is not defined or var is null %}
que pode ser reduzido para:
{% if var|default is null %}
Se você não fornecer um argumento para o default
filtro, ele assumirá NULL
(tipo de padrão padrão). Portanto, a maneira mais curta e segura (eu sei) de verificar se uma variável está vazia (nula, falsa, string / matriz vazia, etc):
{% if var|default is empty %}
Eu não acho que você pode. Isso ocorre porque, se uma variável é indefinida (não definida) no modelo de galho, ela se parece com ( NULL
ou none
em termos de galho). Tenho certeza de que isso é para suprimir erros de acesso incorreto no modelo.
Devido à falta de uma "identidade" no Twig ( ===
), é o melhor que você pode fazer
{% if var == null %}
stuff in here
{% endif %}
Que se traduz em:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Que se o seu bom em seu tipo de malabarismo , significa que as coisas tais como 0
, ''
, FALSE
, NULL
, e um var indefinido irá também fazer essa afirmação verdadeira.
Minha sugestão é pedir que a identidade seja implementada no Twig.
{if var is none}
e qual é o equivalente em PHP?
{% if abcxyz is none %}
torna-se if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
. Então, basicamente, se o valor for indefinido ou nulo, será verdade.
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.html, que é traduzido para PHP if (empty($var))
que é avaliado em relação a um valor falsey ( !isset, null, 0, array(), "", false, "0", 0.0
) php.net/manual/en/function.empty.php Você pode também use {% if var is same as(var) %}
para identity ( ===
). 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 %}