Wie kann ich ein Mitglied eines bereits vorhandenen Arrays von Twig festlegen?
Ich habe es als nächstes versucht:
{% set arr['element'] = 'value' %}
aber ich habe folgenden Fehler erhalten:
Unerwartetes Token "Interpunktion" des Werts "[" ("Ende des Anweisungsblocks" erwartet) in ...
.
und[]
sind in Twig sehr ähnlich und ich habe mich geirrt. Ich habe nachgeschlagen und meine Antwort bearbeitet.'element'
. Ich habe die Antwort von @ LivaX unten gefunden. So wäre es{% set arr = arr|merge({(key): 'value'}) %}
.{{ UI.button({'type':'submit'}) }}
und all diese Makros verwenden | merge zum Festlegen von Standardparametern, daher besteht eine logische Notwendigkeit dafür ...Ich bin auf dieses Problem gestoßen, habe aber versucht, ganzzahlige Indizes anstelle eines assoziativen Index wie 'element' zu erstellen.
Sie müssen Ihren Indexschlüssel auch mit
()
dem Zusammenführungsfilter schützen :Sie können jetzt benutzerdefinierte Indexschlüssel wie hinzufügen
('element'~loop.index0)
quelle
Wenn die Initialisierung nur Folgendes benötigt:
quelle
Ich habe die Antwort von @LivaX ausprobiert, aber sie funktioniert nicht. Das Zusammenführen eines Arrays mit numerischen Schlüsseln funktioniert nicht ( https://github.com/twigphp/Twig/issues/789 ).
Das funktioniert nur, wenn Schlüssel Zeichenfolgen sind
Ich habe eine andere Tabelle (
temp
) aus der Anfangstabelle (t
) neu erstellt und die Schlüssel zu einer Zeichenfolge gemacht, zum Beispiel:t
Tasten: 0, 1, 2 ..temp
Schlüssel: 0_, 1_, 2_ ....quelle
Danke für diesen Thread - ich konnte auch ein Array mit (loop.index0) erstellen und an twig senden.
quelle
Ich fand dieses Problem sehr ärgerlich, und meine Lösung ist vielleicht orthodox und entspricht nicht der Twig-Philosophie, aber ich habe Folgendes entwickelt:
das kann wie folgt verwendet werden:
{% set arr = set_element (arr, 'element', 'value')%}
quelle
Verwenden Sie dies einfach wie
{% set arr={'key':'value'} %}
(ohne Leerzeichen nach dem:
), es funktioniert gut.Aber wenn ich es in einer for-Schleife verwende, um es zu einem Array zu machen, funktioniert es nicht außerhalb des for-Bereichs.
quelle
Ich hatte ein mehrdimensionales Array. Die einzige Lösung, die ich herausfinden konnte, besteht darin, ein neues temporäres Array zu erstellen und die Informationen zu aktualisieren / hinzuzufügen , die an eine andere Zweigfunktion weitergegeben wurden.
quelle
Ich hatte dieses Problem vor einiger Zeit. Stellen Sie sich vor, Sie haben ein Array wie dieses:
Sie möchten diese Daten also in zwei Zeilen anzeigen, aber das Kennwort aus dieser Liste entfernen. Zu diesem Zweck ist die Aufteilung in zwei Arrays mit dem
slice
Filter einfach . Wir müssen jedoch das Passwort entfernen. Aus diesem Grund verwende ich dieses Snippet. Die Idee ist, alle Elemente kleiner als diedata
Elementgröße geteilt durch 2 zu setzen. Um dies zu berechnen, verwenden wir den Filterlength
. Nun erhalten wir den Index des aktuellen Elements, das wir verwendenloop.index
. Und schließlich * verschieben wir ein assoziatives Element in das linke oder rechte Array. Ein assoziatives Array besteht aus zwei Komponentenkey
undvalue
. Um auf einen Array-Schlüssel in twit zu verweisen, operieren wir()
und verwenden denmerge
Filter, um wie hier gezeigt in das Array zu pushen{% set left_list = left_list|merge({ (key): value }) %}
Dies ist die Komplettlösung.
quelle
Sie können auch die folgende Syntax verwenden:
quelle