2013-03-16 10 views
7

Sto tentando di aggiungere coppie di valori chiave a un array con i loro valori correnti per tutti quegli attributi che non iniziano con "_". Per qualche motivo, l'unione sostituisce il valore di "chiave" (i.e slug) con la stringa "chiave".sostituito da "chiave" quando si utilizza l'unione() nel ramoscello

Per esempio quando slug è l'unico attributo con chiave non iniziano con '_',

key = slug 
value = something 

si comporta come segue:

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

ho aggiunto quali sono le discariche ritornano al loro fianco .

La discarica finale ritorna

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

mentre mi aspetto

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

Io direi che è un problema simile a Twig forgets array-keys ma la conclusione su tale questione è che è un problema MongoDB e Non lo sto usando. Sto lavorando con gli attributi della richiesta.

Per qualche motivo, l'unione ({chiave: valore}) si comporta come unione ({'chiave': valore}).

risposta

22

È necessario avvolgere la variabile con le parentesi per poterla utilizzare come chiave.

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

funziona, grazie! – mezod

+0

Siete i benvenuti, considerate di convalidare questa risposta come quella giusta, grazie! –

+0

fatto, non era a conoscenza che potrei farlo: P – mezod

Problemi correlati