Odpowiedzi:
W zależności od tego, czego dokładnie potrzebujesz:
is nullsprawdza, 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 sameastest, 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 definedzwróci, truejeśli zmienna jest zdefiniowana, a jej wartość jest null.
is_ sameasmusi 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 emptyi null?
Bez żadnych założeń odpowiedź brzmi:
{% if var is null %}
Ale będzie to prawdą tylko wtedy, gdy varjest 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 varnie 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 defaultfiltra, 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 NULLlubnone (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 definedANDNULL
{% if var is not null %}