Ответы:
В зависимости от того, что именно вам нужно:
is null
проверяет, является ли значение null
:
{% if var is null %}
{# do something #}
{% endif %}
is defined
проверяет, определена ли переменная:
{% if var is not defined %}
{# do something #}
{% endif %}
Кроме того, is sameas
тест, который выполняет строгое сравнение двух значений, может представлять интерес для проверки значений, отличных от null
(например false
):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()
функции PHP , is defined
будет возвращаться, true
если переменная определена и ее значение равно нулю.
is_ sameas
должно быть {% if var is same as(false) %}
не {% if var is sameas(false) %}
увидеть Doc URL => twig.symfony.com/doc/2.x/tests/sameas.html
Как установить значения по умолчанию в ветке: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Или, если вы не хотите, чтобы он отображался, когда null:
{{ my_var | default("") }}
undefined or empty
и null
?
Без каких-либо предположений ответ:
{% if var is null %}
Но это будет верно, только если var
точно NULL
, а не любое другое значение, которое оценивается false
(например, ноль, пустая строка и пустой массив). Кроме того, это вызовет ошибку, если var
не определено. Более безопасный способ был бы:
{% if var is not defined or var is null %}
который можно сократить до:
{% if var|default is null %}
Если вы не предоставляете аргумент для default
фильтра, он предполагает NULL
(по умолчанию). Итак, самый короткий и безопасный способ (я знаю), чтобы проверить, является ли переменная пустой (ноль, ложь, пустая строка / массив и т. Д.):
{% if var|default is empty %}
Я не думаю, что ты можешь. Это потому, что если переменная не определена (не установлена) в шаблоне ветки, она выглядит как NULL
или none
(в терминах ветки). Я почти уверен, что это должно предотвратить появление ошибок шаблона в шаблоне.
Из-за отсутствия «идентичности» в Twig ( ===
) это лучшее, что вы можете сделать
{% if var == null %}
stuff in here
{% endif %}
Что переводится как:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Что , если вы хорошо в вашем типа жонглирования , означает , что такие вещи, как 0
, ''
, FALSE
, NULL
и неопределенные переменные будут также сделать это утверждение верно.
Мое предложение состоит в том, чтобы попросить, чтобы личность была реализована в Twig.
{if var is none}
и что эквивалентно PHP?
{% if abcxyz is none %}
становится if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
. Поэтому, если значение не определено или равно нулю, оно будет истинным.
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.html, который переводится в PHP, if (empty($var))
который сравнивается со значением Falsey ( !isset, null, 0, array(), "", false, "0", 0.0
) php.net/manual/en/function.empty.php. Вы можете также используйте {% if var is same as(var) %}
для идентификации ( ===
). 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
.
Также, если вашей переменной является ARRAY , есть несколько вариантов:
{% if arrayVariable[0] is defined %}
#if variable is not null#
{% endif %}
ИЛИ
{% if arrayVariable|length > 0 %}
#if variable is not null#
{% endif %}
Это будет работать только если ваш массив is defined
ANDNULL
{% if var is not null %}