Как проверить 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" }}