В Twig проверьте, существует ли определенный ключ массива
В PHP мы можем проверить, существует ли ключ в массиве, используя функцию array_key_exists()
.
На языке шаблонов Twig мы можем проверить, существует ли переменная или свойство объекта, просто используя оператор if
, например:
{% if app.user %}
do something here
{% else %}
do something else
{% endif %}
Но как мы можем проверить, существует ли ключ массива с помощью Twig? Я пытался {% if array.key %}
, но это дает мне ошибку:
Key "key" for array with keys "0, 1, 2, 3...648" does not exist
Поскольку одним из основных способов передачи данных в шаблон является использование массивов, кажется, что должно быть какой-то способ сделать это. Есть какие-нибудь мысли?
53
3 answers
Пример ветки:
{% if array.key is defined %}
// do something
{% else %}
// do something else
{% endif %}
135
Author: phpisuber01, 2012-11-28 14:29:20
Вы можете использовать функцию keys
веточки
{% if myVar in someOtherArray|keys %}
13
Author: Samir Patel, 2017-01-23 21:23:06
Быстрый ответ (TL;DR)
- Разработчик Линдел хочет проверить наличие ключа массива в ветке.
- Разработчик Lindel хочет перехватывать любые ошибки, связанные с неопределенным ключом.
- Это может быть обработано с помощью фильтра
default
.
Подробный ответ
Контекст
- Ветка 2.x (последняя версия по состоянию на Ср 2017-03-08)
- Универсальное использование
default
фильтр.
Проблема
- Сценарий:
- Разработчик Линдел хочет проверить наличие ключа массива в ветке.
- Разработчик Lindel хочет избежать любых ошибок или исключений, вызванных потенциально неопределенным ключом.
Решение
- Разработчик может использовать фильтр
default
. - Фильтр
default
улавливает любые исключения из-за неопределенной переменной и разрешает замену короткого замыкания альтернативным значение. - Фильтр
default
является цепным.
Пример01
{#- **************************************** testing for a single key in associative array -#} {%- set mystring = myarray['key-no-existo'] |default('__BLANK__') -%} {#- **************************************** testing for a multiple keys in associative array -#} {%- set mystring = myarray['alpha'] |default(myarray['bravo']) |default(myarray['charlie']) |default('__BLANK__') -%}
См. также
1
Author: dreftymac, 2017-05-23 12:10:32