Как проверить на ноль в Twig? - PullRequest
266 голосов
/ 16 июля 2010

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

Ответы [ 7 ]

496 голосов
/ 23 декабря 2010

В зависимости от того, что именно вам нужно:

  • 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 %}
120 голосов
/ 26 октября 2011

Как установить значения по умолчанию в веточке: http://twig.sensiolabs.org/doc/filters/default.html

{{ my_var | default("my_var doesn't exist") }}

Или, если вы не хотите, чтобы оно отображалось при нулевом значении:

{{ my_var | default("") }}
33 голосов
/ 21 декабря 2012

Без каких-либо предположений ответ:

{% 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 %}
6 голосов
/ 16 июля 2010

Не думаю, что ты можешь.Это потому, что если переменная не определена (не установлена) в шаблоне ветки, она выглядит как 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, и неопределенная переменная также сделает это утверждение верным.

Я предлагаю попросить ввести идентификатор в Twig.

5 голосов
/ 28 августа 2013
     //test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

     //test if variable is not null
     {% if var is not null %}
         //todo
     {% endif %}
3 голосов
/ 14 июня 2012

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

{% if var is defined %}

var is variable is SET

{% endif %}
2 голосов
/ 07 декабря 2015

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

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