Как проверить наличие null в ветке?
какую конструкцию я должен использовать, чтобы проверить, является ли значение NULL в шаблоне ветки?
7 ответов:
в зависимости от того, что именно вам нужно:
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 %}
Как установить значения по умолчанию в twig:http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
или если вы не хотите, чтобы он отображался при null:
{{ my_var | default("") }}
без каких-либо предположений в ответ:
{% if var is null %}
но это будет верно только если
var
ровноNULL
, а не любое другое значение, которое оценивает вfalse
(например, ноль, пустая строка и пустой массив). Кроме того, это вызовет ошибку, еслиvar
не определен. Более безопасным способом было бы:{% if var is not defined or var is null %}
, который может быть сокращен до:
{% if var|default is null %}
если вы не предоставите аргумента , он предполагает
NULL
(вроде по умолчанию неисполнение.) Поэтому самый короткий и безопасный способ (я знаю) проверить, является ли переменная пустой (null, false, пустая строка/массив и т. д.):{% if var|default is empty %}
Я не думаю, что вы можете. Это связано с тем, что если переменная не определена (не установлена) в шаблоне twig, она выглядит как
NULL
илиnone
(В смысле ветку). Я почти уверен, что это для подавления ошибок плохого доступа, возникающих в шаблоне.из-за отсутствия "идентичности" в ветке (
===
) это лучшее, что вы можете сделать{% if var == null %} stuff in here {% endif %}
что переводится как:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null) { echo "stuff in here"; }
что если хорошо тип жонглирование, это значит, что например,
0
,''
,FALSE
,NULL
, и неопределенный var также сделает это утверждение истинным.мое предложение-попросить, чтобы личность была реализована в Twig.
//test if varibale exist {% if var is defined %} //todo {% endif %} //test if variable is not null {% if var is not null %} //todo {% endif %}