2013-03-16 19 views
7

Próbuję dodać pary wartości klucza do tablicy z ich bieżącymi wartościami dla wszystkich atrybutów, które nie zaczynają się od "_". Z jakiegoś powodu scalenie zastępuje wartość "klucza" (to znaczy slug) ciągiem "klucz".Kluczowa wartość jest zastępowana przez "klucz" podczas używania funkcji scalania() w gałązce

Na przykład, gdy ślimak jest jedynym atrybutem z kluczem nie wychodząc z „_”,

key = slug 
value = something 

zachowuje się w następujący sposób:

{% for key,value in app.request.attributes.all %} 
    {% if '_' != key | slice(0, 1) %} 
     {{ dump(key) }} // string(4) "slug" 
     {% set params = params | merge({ key : value}) %} 
     {{ dump(key) }} // string(4) "slug" 
    {% endif %} 
{% endfor %} 
{{ dump(params) }} // array(1) { ["key"]=> string(9) "something" } 

Dodałem co wysypisk powrócić obok nich .

Ostateczna bryła zwraca

array(1) { ["key"]=> string(9) "something" } 

podczas Czekam

array(1) { ["slug"]=> string(9) "something" } 

Powiedziałbym, że jest to podobny problem Twig forgets array-keys ale konkluzja na to pytanie jest to, że jest to problem i MongoDB Nie używam tego. Pracuję z atrybutami z żądania.

Z jakiegoś powodu scalenie ({klucz: wartość}) zachowuje się jako scalenie ({'klucz': wartość}).

Odpowiedz

22

Musisz zawinąć zmienną za pomocą nawiasów, aby móc użyć jej jako klucza.

{% set params = params | merge({ (key) : value}) %} 
+0

Działa, dzięki! – mezod

+0

Zapraszamy, rozważ zatwierdzenie tej odpowiedzi jako właściwej, dzięki! –

+0

zrobione, nie wiedziałem, że mogę to zrobić: P – mezod