Как проверить, существует ли переменная и не является ли она пустой с помощью Twig, используя короткий синтаксис

Проверка содержимого переменных в Twig может быть довольно сложной без расширения дампа. Даже при этом иногда вам будет лень и вы будете предполагать, что содержимое некоторых переменных отправлено из PHP в Twig, как обычно переменная может быть пустой и в соответствии с этим вы можете захотеть сделать что-то другое, например, распечатать другой текст и т. Д. Разработчик привык к пустому тесту:

{# Or {% set variable = null %} as well #}
{% set variable = "" %}
{% if variable is empty %}
The variable is empty.
{% else %}
The variable is not empty.
{% endif %}

Если значение переменной — пустая строка или ноль, напечатанный текст будет «Переменная пуста». Также вы можете проверить, является ли свойство внутри массива пустым:

{# Or {% set variable = null %} as well #}
{% set variable = {
"name": "Carlos",
"lastName": "Delgado"
} %}
{% if variable.name is empty %}
The variable is empty.
{% else %}
The variable is not empty.
{% endif %}

В этом случае переменная существует и ключ имени определен, поэтому будет напечатано «Переменная не пуста». Однако что, если переменная, из которой вы хотите проверить, существует ли ключ, не существует? Возможно, вам придется продлить, если:

{% if variable is defined %}
{% if variable.name is empty %}
The variable is empty.
{% else %}
The variable is not empty.
{% endif %}
{% else %}
The variable is not defined.
{% endif %}

В этом случае, поскольку наша переменная не существует, она выведет «Переменная не определена или не пуста». Немного грязно и долго нет? Даже игнорируя, что вы не хотите показывать сообщение вашему пользователю, что переменная не определена, а только «Переменная пуста». Что если я скажу вам, что есть более простой способ сделать это? Использование фильтра по умолчанию!

Использование фильтра по умолчанию

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

{% if variable.name|default %}
The variable is not empty
{% else %}
The variable is empty.
{% endif %}

В этом случае фильтр сначала проверяет, существует ли переменная «переменная», если он существует, продолжает с ключом в этом имени дела, если он существует и не является пустым, он возвращает истину, чтобы было напечатано первое сообщение. Как уже упоминалось, если ключ существует, но его значение пусто, условие вернет false:

{# Or {% set variable = null %} as well #}
{% set variable = {
"name": null,
"lastName": "Delgado"
} %}
{% if variable.name|default %}
The variable is not empty
{% else %}
The variable is empty.
{% endif %}

Который в этом случае напечатает «Переменная пуста». Чтобы узнать больше о фильтр по умолчанию, не забудьте прочитать официальную документацию фильтра на веб-странице Twig.

Ссылка на основную публикацию
Adblock
detector