Welches Konstrukt sollte ich verwenden, um zu überprüfen, ob ein Wert in einer Twig-Vorlage NULL ist?
Welches Konstrukt sollte ich verwenden, um zu überprüfen, ob ein Wert in einer Twig-Vorlage NULL ist?
Antworten:
Je nachdem, was genau Sie brauchen:
is null
prüft, ob der Wert ist null
:
{% if var is null %}
{# do something #}
{% endif %}
is defined
prüft, ob die Variable definiert ist:
{% if var is not defined %}
{# do something #}
{% endif %}
Zusätzlich könnte der is sameas
Test, bei dem zwei Werte typenvergleich verglichen werden, von Interesse sein, um andere Werte als null
(wie false
) zu überprüfen :
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()
Funktion, is defined
wird zurückkehren , true
wenn eine Variable definiert ist und der Wert ist null.
is_ sameas
muss {% if var is same as(false) %}
nicht {% if var is sameas(false) %}
gesehen werden Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
So legen Sie Standardwerte in twig fest: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Oder wenn Sie nicht möchten, dass es angezeigt wird, wenn null:
{{ my_var | default("") }}
undefined or empty
und null
?
Ohne Annahmen lautet die Antwort:
{% if var is null %}
Dies gilt jedoch nur, wenn dies var
genau der Fall ist NULL
und kein anderer Wert, der ausgewertet wird false
(z. B. Null, leere Zeichenfolge und leeres Array). Außerdem wird es einen Fehler verursachen, wenn var
es nicht definiert ist. Ein sicherer Weg wäre:
{% if var is not defined or var is null %}
was verkürzt werden kann zu:
{% if var|default is null %}
Wenn Sie dem default
Filter kein Argument geben , wird davon ausgegangen NULL
(eine Art Standardstandard). Der kürzeste und sicherste Weg (ich weiß), um zu überprüfen, ob eine Variable leer ist (null, false, leerer String / Array usw.):
{% if var|default is empty %}
Ich glaube nicht, dass du kannst. Dies liegt daran, dass eine Variable, die in der Zweigvorlage nicht definiert (nicht festgelegt) ist, wie NULL
oder none
(in Zweigbegriffen) aussieht . Ich bin mir ziemlich sicher, dass dies dazu dient, das Auftreten fehlerhafter Zugriffsfehler in der Vorlage zu unterdrücken.
Aufgrund des Fehlens einer "Identität" in Twig ( ===
) ist dies das Beste, was Sie tun können
{% if var == null %}
stuff in here
{% endif %}
Was bedeutet:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Was , wenn Ihr gut an Ihrer Art Jonglieren , bedeutet , dass Dinge wie 0
, ''
, FALSE
, NULL
, und eine undefinierte var auch diese Aussage wahr machen wird.
Mein Vorschlag ist, nach der Implementierung der Identität in Twig zu fragen.
{if var is none}
und was ist das PHP-Äquivalent?
{% if abcxyz is none %}
wird if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
. Wenn der Wert also undefiniert oder null ist, ist er wahr.
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.html, was in PHP übersetzt wird, if (empty($var))
das anhand eines Falsey-Werts ( !isset, null, 0, array(), "", false, "0", 0.0
) ausgewertet wird. Php.net/manual/en/function.empty.php Sie können auch {% if var is same as(var) %}
für identity ( ===
) verwenden. 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 %}