2013-03-12 18 views
5

C'è un modo per sostituire un valore di parametro GET da twig?Twig - sostituisce dinamicamente il valore del parametro GET

Per esempio, ho una pagina a questo indirizzo:

http://localhost/app_dev.php/test/?param1=40&sort=name 

E nel mio ramoscello voglio costruire 3 link come questo:

http://localhost/app_dev.php/test/?param1=40&sort=name 
http://localhost/app_dev.php/test/?param1=40&sort=address 
http://localhost/app_dev.php/test/?param1=40&sort=code 

Per ora ho aggiunto il "& sorta "parametro ancora una volta alla fine sull'URL, ma questa soluzione è in realtà una" patch "e fa schifo!

<a href="{{app.request.requesturi}}&sort=address">address</a> 

In questo esempio ho solo 2 parametri, ma in realtà ho circa 6 parametri, perché il legame che ha generato è ottenuto inviando una.

+0

Non capisco la domanda. Potresti spiegare più in dettaglio? – Bart

+0

beh ... Ho bisogno di ottenere l'URL corrente e quindi sostituire il valore di un parametro esistente. Nell'esempio fornito, voglio ricostruire l'URL con un valore diverso per "sort" –

risposta

22

Questo dovrebbe risolvere il problema:

{{ path(app.request.attributes.get('_route'), 
    app.request.query.all|merge({'sort': 'address'})) }} 

Si ottiene il percorso attuale e tutti i parametri di query che vengono uniti quello che ti piace aggiornare prima di essere aggiunto.

+2

Grazie! Questo lo risolve :) –

+0

Grande! Questo ha risolto molti dei miei problemi: – Rvanlaak

+0

tu ... Mi piaci ^^ –

2

Symfony/Twig path funzione accetta parametri facoltativi. Se questi parametri fanno parte del percorso, vengono gestiti dal router, ma se non lo sono, vengono passati come parametri GET.

Quindi, se il percorso corrispondente è, ad esempio, my_route:

<a href="{{ path('my_route', {'param1':40, 'sort':'address'}) }}">address</a> 
+0

ma cosa succede se ho un elenco di 6 parametri? Devo costruire il link per tutti i parametri? Il link generato si ottiene inviando uno

... –

+0

PéCé - Ho modificato la domanda per essere più chiara. –

+0

@insertusernamehere ha la tua risposta. Mantiene i parametri di richiesta e sostituisce solo quelli che si desidera modificare. – AlterPHP

Problemi correlati