Ответы:
В зависимости от того, что именно вам нужно:
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 definedANDNULL
{% if var is not null %}