Zuerst in Zweig Terminologie, das ist nicht ein Objekt oder eine Schlüssel-Wert-Array aber ein Hash (see Twig's documentation of literals).
Sie können ein Element nicht zu einem Hash hinzufügen, z. indem Sie {% set data.second = 'Second' %}
tun. Stattdessen müssen Sie die merge filter verwenden: So
{%
set data = data|merge({
second: 'Second',
})
%}
{{ dump(data) }}
{# Prints this:
array(3) {
["first"]=>
string(5) "First"
["data"]=>
array(1) {
["val_1"]=>
string(5) "val_1"
}
["second"]=>
string(6) "Second"
}
#}
, ein Element zu einem Hash in einem Hash hinzuzufügen, müssen Sie zweimal den Merge-Filter verwenden:
{%
set data = data|merge({
data: data.data|merge({
val_2: 'val_2',
}),
})
%}
{# Prints this:
array(3) {
["first"]=>
string(5) "First"
["data"]=>
array(1) {
["val_1"]=>
string(5) "val_1"
["val_2"]=>
string(5) "val_2"
}
["second"]=>
string(6) "Second"
}
#}
Wenn Sie viele dies tun Eine Art von variabler Manipulation in Twig könnte ein Zeichen dafür sein, dass ein Teil dieses Codes besser in einen Controller oder ein Modell oder was auch immer eingefügt werden könnte.