2013-03-12 9 views
5

Czy istnieje sposób na zastąpienie wartości parametru GET z gałązki?Twig - dynamicznie zastępuje wartość parametru GET

Na przykład, mam stronę na adres:

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

I w moim gałązka Chcę zbudować 3 linki tak:

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 

Na razie dodałem "& rodzaju "Parametr po raz kolejny na końcu adresu URL, ale to rozwiązanie jest w rzeczywistości" łatką "i jest do bani!

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

W tym przykładzie mam tylko 2 parametry, ale w rzeczywistości mam około 6 parametrów, ponieważ związek, który jest generowany jest to uzyskane przez złożenie.

+0

Nie rozumiem pytania. Czy mógłbyś bardziej szczegółowo wyjaśnić? – Bart

+0

well ... Potrzebuję uzyskać bieżący adres URL, a następnie zastąpić wartość istniejącego parametru. W podanym przykładzie chcę przebudować URL o innej wartości dla "sortowania" –

Odpowiedz

22

To powinno rozwiązać problem:

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

Robi aktualną trasę i wszystkie parametry zapytań, które są połączone z ten, który chcesz zaktualizować przed ich dołączeniem.

+2

Dzięki! To rozwiązuje to :) –

+0

Świetnie! To rozwiązało wiele moich problemów: – Rvanlaak

+0

ty ... lubię cię^^ –

2

Funkcja Symfony/Twig path akceptuje opcjonalne parametry. Jeśli te parametry są częścią trasy, są obsługiwane przez router, ale jeśli nie są, są przekazywane jako parametry GET.

Dlatego, jeśli odpowiednia trasa jest, na przykład, my_route:

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

, ale co jeśli mam listę 6 parametrów? Potrzebuję zbudować link dla wszystkich params? Uzyskany link jest uzyskiwany przez przesłanie

... –

+0

PéCé - zredagowałem pytanie, aby było jaśniejsze. –

+0

@insertusernametutaj masz odpowiedź. Zachowuje parametry żądania i zastępuje tylko te, które chcesz zmienić. – AlterPHP

Powiązane problemy