Comment puis-je définir un membre d'un tableau déjà existant depuis Twig?
J'ai essayé de le faire de la manière suivante:
{% set arr['element'] = 'value' %}
mais j'ai eu l'erreur suivante:
Jeton "ponctuation" inattendu de la valeur "[" ("fin du bloc d'instructions" attendu) dans ...
.
et[]
sont très similaires dans Twig et je me suis trompé. J'ai recherché et modifié ma réponse.'element'
. J'ai trouvé la réponse de @ LivaX ci-dessous. Donc, ce serait{% set arr = arr|merge({(key): 'value'}) %}
.{{ UI.button({'type':'submit'}) }}
et toutes ces macros utilisent | merge pour définir les paramètres par défaut, il y a donc un besoin logique pour cela ...J'ai rencontré ce problème mais j'essayais de créer des index entiers au lieu d'index associatif comme «élément».
Vous devez également protéger votre clé d'index en
()
utilisant le filtre de fusion:Vous pouvez maintenant ajouter une clé d'index personnalisée comme
('element'~loop.index0)
la source
Si l'initialisation nécessite uniquement:
la source
J'ai essayé la réponse de @LivaX mais cela ne fonctionne pas, fusionner un tableau où les clés sont numériques ne fonctionnera pas ( https://github.com/twigphp/Twig/issues/789 ).
Cela ne fonctionnera que lorsque les clés sont des chaînes
Ce que j'ai fait, c'est recréer une autre table (
temp
) à partir de la table initiale (t
) et faire des clés une chaîne, par exemple:t
touches: 0, 1, 2 ..temp
clés: 0_, 1_, 2_ ....la source
Merci pour ce fil - j'ai également pu créer un tableau avec (loop.index0) et l'envoyer à twig.
la source
J'ai trouvé ce problème très ennuyeux, et ma solution est peut-être orthodoxe et non conforme à la philosophie Twig, mais j'ai développé ce qui suit:
qui peut être utilisé comme suit:
{% set arr = set_element (arr, 'element', 'value')%}
la source
Utilisez simplement ceci comme
{% set arr={'key':'value'} %}
(sans espace après le:
), cela fonctionne bien.Mais quand je l'utilise dans une boucle for, pour en faire un tableau, cela ne fonctionne pas en dehors de la portée for.
la source
J'avais un tableau multidimensionnel. La seule solution que j'ai pu trouver est de créer un nouveau tableau temporaire et de mettre à jour / ajouter les informations, qui ont ensuite été transmises à une autre fonction de brindille.
la source
J'ai eu ce problème il y a quelque temps. Imaginez que vous ayez un tableau comme celui-ci:
Donc, vous voulez afficher ces données sur deux lignes, mais supprimez le mot de passe de cette liste. À cette fin, diviser en 2 tableaux sera facile avec le
slice
filtre. Cependant, nous devons supprimer le mot de passe. Pour cette raison, j'utilise cet extrait. L'idée est de mettre tous les éléments inférieurs à ladata
taille des éléments divisée par 2. Pour calculer cela, nous utilisons le filtrelength
. Maintenant, pour obtenir l'index de l'élément courant que nous utilisonsloop.index
. Et enfin nous * poussons un élément associatif dans le tableau de gauche ou de droite. Un tableau associatif a deux composantskey
etvalue
. Pour référencer une clé de tableau dans twit, nous opérateur()
et nous utilisons lemerge
filtre pour pousser dans le tableau comme indiqué ici{% set left_list = left_list|merge({ (key): value }) %}
C'est la solution complète.
la source
Vous pouvez également utiliser la syntaxe suivante:
la source