Risposte:
A seconda di cosa esattamente hai bisogno:
is null
controlla se il valore è null
:
{% if var is null %}
{# do something #}
{% endif %}
is defined
controlla se la variabile è definita:
{% if var is not defined %}
{# do something #}
{% endif %}
Inoltre, il is sameas
test, che prevede un confronto rigoroso di tipo tra due valori, potrebbe essere interessante per la verifica di valori diversi da null
(come false
):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()
funzione PHP , is defined
ritornerà true
se viene definita una variabile e il suo valore è nullo.
is_ sameas
deve essere {% if var is same as(false) %}
non {% if var is sameas(false) %}
vedere Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
Come impostare i valori predefiniti nel ramoscello: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
O se non vuoi che venga visualizzato quando null:
{{ my_var | default("") }}
undefined or empty
e null
?
Senza ipotesi la risposta è:
{% if var is null %}
Ma questo sarà vero solo se lo var
è esattamente NULL
e non qualsiasi altro valore valutato false
(come zero, stringa vuota e matrice vuota). Inoltre, causerà un errore se var
non è definito. Un modo più sicuro sarebbe:
{% if var is not defined or var is null %}
che può essere abbreviato in:
{% if var|default is null %}
Se non si fornisce un argomento al default
filtro, presuppone NULL
(una sorta di default predefinito). Quindi il modo più breve e sicuro (lo so) per verificare se una variabile è vuota (null, false, stringa / array vuota, ecc.):
{% if var|default is empty %}
Non penso che tu possa. Questo perché se una variabile non è definita (non impostata) nel modello di ramoscello, appare come NULL
o none
(in termini di ramoscello). Sono abbastanza sicuro che questo serve a sopprimere gli errori di accesso non validi nel modello.
A causa della mancanza di una "identità" in Twig ( ===
) questo è il meglio che puoi fare
{% if var == null %}
stuff in here
{% endif %}
Che si traduce in:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Il che, se il vostro bene al vostro tipo di giocoleria , significa che le cose, come 0
, ''
, FALSE
, NULL
, e una var indefinita farà anche questa affermazione vera.
Il mio suggerimento è di chiedere l'identità da implementare in Twig.
{if var is none}
e qual è l'equivalente in PHP?
{% if abcxyz is none %}
diventa if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
. Quindi sostanzialmente se il valore è indefinito o nullo, sarà vero.
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.html che si traduce in PHP if (empty($var))
che valuta un valore di falso ( !isset, null, 0, array(), "", false, "0", 0.0
) php.net/manual/en/function.empty.php Puoi utilizzare anche {% if var is same as(var) %}
per identità ( ===
). 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 %}