Как проверить null в Twig?
какую конструкцию я должен использовать, чтобы проверить, является ли значение NULL в шаблоне веточки?
7 ответов
в зависимости от того, что именно вам нужно:
-
is null
проверяет, является ли значениеnull
:{% if var is null %} {# do something #} {% endif %}
-
is defined
проверяет, определена ли переменная:{% if var is not defined %} {# do something #} {% endif %}
дополнительно is sameas
test, который делает строгое сравнение типа двух значений, может представлять интерес для проверки значений, отличных от 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, empty string/array и т. д.):
{% if var|default is empty %}
Я не думаю, что вы можете. Это потому, что если переменная не определена (не установлена) в шаблоне twig, она выглядит как 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
, и неопределенный 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 %}
вы можете использовать следующий код, чтобы проверить, является ли
{% if var is defined %}
var is variable is SET
{% endif %}
вы также можете использовать одну линию, для этого:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}