Respostas:
Dependendo do que exatamente você precisa:
is nullverifica 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 sameasteste, 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 definedretornará truese uma variável for definida e seu valor for nulo.
is_ sameasdeve 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 emptye null?
Sem nenhuma suposição, a resposta é:
{% if var is null %}
Mas isso será verdadeiro apenas se varfor 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 varnã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 defaultfiltro, 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 ( NULLou noneem 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 %}