Risposte:
A seconda di cosa esattamente hai bisogno:
is nullcontrolla 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 sameastest, 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 definedritornerà truese viene definita una variabile e il suo valore è nullo.
is_ sameasdeve 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 emptye null?
Senza ipotesi la risposta è:
{% if var is null %}
Ma questo sarà vero solo se lo varè esattamente NULLe non qualsiasi altro valore valutato false(come zero, stringa vuota e matrice vuota). Inoltre, causerà un errore se varnon è 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 defaultfiltro, 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 NULLo 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 %}