¿Cómo puedo establecer un miembro de una matriz ya existente de Twig?
Intenté hacerlo de la siguiente manera:
{% set arr['element'] = 'value' %}
pero recibí el siguiente error:
Token inesperado "puntuación" del valor "[" ("fin del bloque de declaración" esperado) en ...
.
y[]
son muy similares en Twig y me equivoqué. Lo busqué y edité mi respuesta.'element'
. Encontré la respuesta de @ LivaX a continuación. Entonces, lo sería{% set arr = arr|merge({(key): 'value'}) %}
.{{ UI.button({'type':'submit'}) }}
y todas estas macros usan | fusionar para establecer los parámetros predeterminados, por lo que existe una necesidad lógica de esto ...Me encontré con este problema pero estaba tratando de crear índices enteros en lugar de índices asociativos como 'elemento'.
También debe proteger su clave de índice
()
utilizando el filtro de combinación:Ahora puede agregar una clave de índice personalizada como
('element'~loop.index0)
fuente
Si la inicialización solo necesita:
fuente
He intentado la respuesta de @LivaX pero no funciona, fusionar una matriz donde las teclas son numéricas no funcionará ( https://github.com/twigphp/Twig/issues/789 ).
Eso funcionará solo cuando las teclas sean cadenas
Lo que hice fue recrear otra tabla (
temp
) de la tabla inicial (t
) y convertir las teclas en una cadena, por ejemplo:t
teclas: 0, 1, 2 ..temp
teclas: 0_, 1_, 2_ ....fuente
Gracias por este hilo: también pude crear una matriz con (loop.index0) y enviar a twig.
fuente
Este problema me pareció muy molesto, y mi solución es quizás ortodoxa y no está en línea con la filosofía Twig, pero desarrollé lo siguiente:
que se puede usar de la siguiente manera:
{% set arr = set_element (arr, 'elemento', 'valor')%}
fuente
Simplemente use esto como
{% set arr={'key':'value'} %}
(sin espacio en blanco después de:
), funciona bien.Pero cuando lo uso dentro de un bucle for, para convertirlo en una matriz, no funciona fuera del alcance for.
fuente
Tenía una matriz multidimensional. La única solución que pude descubrir es crear una nueva matriz temporal y actualizar / agregar la información, que luego se pasó a otra función de ramita.
fuente
Tuve este problema hace algún tiempo. Imagina que tienes una matriz como esta:
Por lo tanto, desea mostrar estos datos en dos filas, pero elimine la contraseña de esa lista. Para este fin, dividir en 2 matrices será fácil con el
slice
filtro. Sin embargo, tenemos que eliminar la contraseña. Por esa razón, estoy usando este fragmento. La idea es poner todos los elementos menores que eldata
tamaño de los elementos dividido por 2. Para calcular esto, usamos el filtrolength
. Ahora para obtener el índice del elemento actual que usamosloop.index
. Y finalmente * empujamos un elemento asociativo en la matriz izquierda o derecha. Una matriz asociativa tiene dos componenteskey
yvalue
. Para hacer referencia a una clave de matriz en twit, operamos()
y usamos elmerge
filtro filtro para insertarlo en la matriz como se muestra aquí{% set left_list = left_list|merge({ (key): value }) %}
Esta es la solución completa.
fuente
También puede usar la siguiente sintaxis:
fuente