Odpowiedzi:
W zależności od tego, czego dokładnie potrzebujesz:
is null
sprawdza, czy wartość jest null
:
{% if var is null %}
{# do something #}
{% endif %}
is defined
sprawdza, czy zmienna jest zdefiniowana:
{% if var is not defined %}
{# do something #}
{% endif %}
Dodatkowo is sameas
test, który dokonuje ścisłego porównania dwóch wartości, może być przydatny do sprawdzania wartości innych niż null
(jak false
):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()
funkcji PHP , is defined
zwróci, true
jeśli zmienna jest zdefiniowana, a jej wartość jest null.
is_ sameas
musi być {% if var is same as(false) %}
to {% if var is sameas(false) %}
Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
Jak ustawić wartości domyślne w gałązce: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Lub jeśli nie chcesz, aby wyświetlał się jako null:
{{ my_var | default("") }}
undefined or empty
i null
?
Bez żadnych założeń odpowiedź brzmi:
{% if var is null %}
Ale będzie to prawdą tylko wtedy, gdy var
jest dokładnie NULL
, a nie jakąkolwiek inną wartością, która ma wartość false
(np. Zero, pusty ciąg i pusta tablica). Poza tym spowoduje błąd, jeśli var
nie zostanie zdefiniowany. Bezpieczniejszym sposobem byłoby:
{% if var is not defined or var is null %}
które można skrócić do:
{% if var|default is null %}
Jeśli nie podasz argumentu do default
filtra, zakłada się NULL
(domyślnie coś w rodzaju domyślnego). Zatem najkrótszy i najbezpieczniejszy sposób (wiem), aby sprawdzić, czy zmienna jest pusta (null, false, pusty ciąg / tablica itp.):
{% if var|default is empty %}
Nie sądzę, że możesz. Wynika to z faktu, że jeśli zmienna jest niezdefiniowana (nie ustawiona) w szablonie gałązki, wygląda jak NULL
lubnone
(w kategoriach gałązek). Jestem prawie pewien, że ma to na celu wyeliminowanie błędów złego dostępu w szablonie.
Ze względu na brak „tożsamości” w Twig ( ===
) jest to najlepsze, co możesz zrobić
{% if var == null %}
stuff in here
{% endif %}
Co przekłada się na:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Który, jeśli dobry w swoim rodzaju żonglerki oznacza, że rzeczy takie jak 0
, ''
,FALSE
,NULL
, i niezdefiniowane var będzie również to stwierdzenie prawdziwe.
Sugeruję, aby poprosić o wdrożenie tożsamości w Twig.
{if var is none}
i jaki jest odpowiednik PHP?
{% if abcxyz is none %}
staje się if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
. Zasadniczo więc, jeśli wartość jest niezdefiniowana lub ma wartość null, będzie to prawda.
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.html, co przekłada się na PHP, if (empty($var))
który ocenia na podstawie wartości falsey ( !isset, null, 0, array(), "", false, "0", 0.0
) php.net/manual/en/function.empty.php Możesz użyj także {% if var is same as(var) %}
do tożsamości ( ===
). 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
.
Również jeśli twoja zmienna jest tablicą , istnieje również kilka opcji:
{% if arrayVariable[0] is defined %}
#if variable is not null#
{% endif %}
LUB
{% if arrayVariable|length > 0 %}
#if variable is not null#
{% endif %}
Działa to tylko wtedy, gdy macie tablicę is defined
ANDNULL
{% if var is not null %}