Как проверить наличие null в ветке?


какую конструкцию я должен использовать, чтобы проверить, является ли значение NULL в шаблоне ветки?

7 245

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 %}

вы можете использовать следующий код, чтобы проверить, является ли

{% if var is defined %}

var is variable is SET

{% endif %}

вы также можете использовать одну линию, для этого:

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}