2013-03-16 11 views
7

Tôi đang cố gắng thêm cặp giá trị khóa vào một mảng với giá trị hiện tại của chúng cho tất cả các thuộc tính đó không bắt đầu bằng '_'. Đối với một số lý do, việc hợp nhất sẽ thay thế giá trị của "key" (nghĩa là slug) bằng chuỗi 'key'.được thay thế bằng 'khóa' khi sử dụng hợp nhất() trong cành

Ví dụ khi sên là thuộc tính chỉ với phím không bắt đầu bằng '_',

key = slug 
value = something 

nó cư xử như sau:

{% 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" } 

Tôi đã thêm những gì các bãi trở lại bên cạnh họ .

Các bãi thức trả

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

trong khi tôi đang mong đợi

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

tôi muốn nói đó là một vấn đề tương tự như Twig forgets array-keys nhưng kết luận về câu hỏi đó là đó là một vấn đề MongoDB và Tôi không sử dụng nó. Tôi đang làm việc với các thuộc tính từ yêu cầu.

Vì một số lý do, quá trình hợp nhất ({key: value}) hoạt động như hợp nhất ({'key': value}).

Trả lời

22

Bạn cần phải quấn biến của mình bằng dấu ngoặc đơn để có thể sử dụng nó làm khóa.

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

hoạt động, cảm ơn! – mezod

+0

Bạn được hoan nghênh, hãy xem xét xác thực câu trả lời này là câu trả lời đúng, cảm ơn! –

+0

được thực hiện, không nhận thức được tôi có thể làm điều đó: P – mezod