Как я могу установить член уже существующего массива из Twig?
Я попробовал сделать это следующим образом:
{% set arr['element'] = 'value' %}
но я получил следующую ошибку:
Неожиданный знак «пунктуация» значения «[» (ожидается «конец блока оператора») в ...
.
и[]
очень похожи в Twig, и я ошибался. Я посмотрел и отредактировал свой ответ.'element'
. Я нашел ответ @LivaX ниже. Так бы и было{% set arr = arr|merge({(key): 'value'}) %}
.{{ UI.button({'type':'submit'}) }}
и все эти макросы используют | merge для установки параметров по умолчанию, так что в этом есть логическая необходимость ...Я столкнулся с этой проблемой, но пытался создать целочисленные индексы вместо ассоциативного индекса, такого как «элемент».
Вам также необходимо защитить свой индексный ключ с
()
помощью фильтра слияния:Теперь вы можете добавить собственный индексный ключ, например
('element'~loop.index0)
источник
Если требуется только инициализация:
источник
Я пробовал ответить @LivaX, но он не работает, объединение массива, где ключи числовые, не работают ( https://github.com/twigphp/Twig/issues/789 ).
Это будет работать только тогда, когда ключи будут строками
Я воссоздал еще одну таблицу (
temp
) из исходной таблицы (t
) и сделал ключи строкой, например:t
ключи: 0, 1, 2 ..temp
ключи: 0_, 1_, 2_ ....источник
Спасибо за эту тему - я также смог создать массив с помощью (loop.index0) и отправить его в ветку.
источник
Я нашел эту проблему очень раздражающей, и мое решение, возможно, является ортодоксальным и не соответствует философии Twig, но я разработал следующее:
который можно использовать следующим образом:
{% set arr = set_element (arr, 'element', 'value')%}
источник
Просто используйте это как
{% set arr={'key':'value'} %}
(без пробелов после:
), это хорошо работает.Но когда я использую его внутри цикла for, чтобы сделать его массивом, он не работает за пределами области видимости for.
источник
У меня был многомерный массив. Единственное решение, которое я смог найти, - это создать новый временный массив и обновить / добавить информацию, которая затем была передана другой функции веточки.
источник
Некоторое время назад у меня была эта проблема. Представьте, что у вас есть такой массив:
Итак, вы хотите отобразить эти данные в двух строках, но удалите пароль из этого списка. С этой целью с помощью
slice
фильтра будет легко разделить на 2 массива . Однако мы должны удалить пароль. По этой причине я использую этот фрагмент. Идея состоит в том, чтобы поместить все элементы меньше, чемdata
размер элементов, разделенный на 2. Чтобы вычислить это, мы используем фильтрlength
. Теперь, чтобы получить индекс текущего пользовательского элементаloop.index
. И, наконец, мы * вставляем ассоциативный элемент в левый или правый массив. Ассоциативный массив состоит из двух компонентовkey
иvalue
. Чтобы ссылаться на ключ массива в twit, мы оператор,()
и мы используемmerge
фильтр для вставки в массив, как показано здесь{% set left_list = left_list|merge({ (key): value }) %}
Это полное решение.
источник
Вы также можете использовать следующий синтаксис:
источник