Какую конструкцию я должен использовать, чтобы проверить, является ли значение NULL в шаблоне Twig?Как проверить значение null в Twig?
ответ
В зависимости от того, что именно вам нужно:
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 %}
Я не думаю, что вы можете. Это связано с тем, что если переменная не определена (не установлена) в шаблоне ветви, она выглядит как NULL
или none
(в терминологии веток). Я уверен, что это должно подавлять ошибки плохого доступа, возникающие в шаблоне.
Из-за отсутствия «идентичности» в Twig (===
), это лучшее, что вы можете сделать
{% if var == null %}
stuff in here
{% endif %}
что переводится:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Что, если вы хорошо в вашем type juggling , означает, что такие вещи, как 0
, ''
, FALSE
, NULL
, а также неопределенный var также сделают это утверждение истинным.
Мое предложение - попросить, чтобы личность была внедрена в Twig.
Kendall вправе предположить, что они реализуют его - у меня не было ничего, кроме хороших впечатлений, прося о том, чтобы вещи были реализованы в трекерном выпуске Twig's github. Они очень дружелюбны и профессиональны. – Shabbyrobe
@ kendall-hopkins Любопытно, когда целесообразно использовать '{if var is none}' и что такое эквивалент PHP? – noisebleed
@noisebleed '{% if abcxyz is none%}' становится 'if (isset ($ context [" abcxyz "])) {$ _abcxyz_ = $ context [" abcxyz "]; } else {$ _abcxyz_ = null; } ' ' if ((null === $ _abcxyz_)) {echo "hi"; } '. Таким образом, в основном, если значение не определено или равно null, оно будет истинным. –
Как установить значения по умолчанию в веточке: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Или, если вы не хотите, чтобы показать, когда нуль:
{{ my_var | default("") }}
Так различается ли это 'undefined or empty' и' null'? – Fluffy
Кажется, что это правильный способ проверить ... Позор, у него не так много оборотов. –
Именно то, что я искал. Придется убедиться, что у вас есть | по умолчанию, который затем можно попробовать по умолчанию для другой переменной: {{my_var | default (my_var2)}} Я только что протестировал, но вы можете продолжить цепочку так: {{my_var | default (my_var2) | default («my_var и my_var2 не существуют»)}} –
вы можете использовать следующий код, чтобы проверить, является ли
{% if var is defined %}
var is variable is SET
{% endif %}
Без каких-либо предположений ответ:
{% 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 %}
//test if varibale exist
{% if var is defined %}
//todo
{% endif %}
//test if variable is not null
{% if var is not null %}
//todo
{% endif %}
Вы также можете использовать одну линию, чтобы сделать это:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
Теперь это правильный ответ для twig –
И чтобы проверить, не что-то не пустое, просто сделайте '{%, если var не null%}' –
обратите внимание на то, что: $ var == null вернет true с $ var равно 0, но значение $ var равно null возвращает false – daSn0wie