2013-03-12 7 views
5

क्या कोई GET पैरामीटर मान को टोग से प्रतिस्थापित करने का कोई तरीका है?ट्विग - गतिशील रूप से GET पैरामीटर के मान को प्रतिस्थापित करें

उदाहरण के लिए, मैं इस पते पर कोई पृष्ठ है:

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

और मेरे टहनी में मैं इस तरह 3 लिंक का निर्माण करना चाहते:

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 

अभी के लिए मैं "& तरह जोड़ा "URL पर अंत में एक बार फिर पैरामीटर, लेकिन यह समाधान वास्तव में एक" पैच "है और यह बेकार है!

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

इस उदाहरण में मैं केवल 2 पैरामीटर है, लेकिन वास्तव में मैं लगभग 6 मानकों है, क्योंकि लिंक है कि यह उत्पन्न एक जमा करके प्राप्त कर रहा है।

+0

मुझे प्रश्न समझ में नहीं आता है। क्या आप अधिक विस्तार से समझा सकते हैं? – Bart

+0

अच्छी तरह से ... मुझे वर्तमान यूआरएल प्राप्त करने की आवश्यकता है और फिर मौजूदा पैरामीटर के मान को प्रतिस्थापित करें। प्रदान किए गए उदाहरण में मैं यूआरएल को "सॉर्ट" –

उत्तर

22

यह आपकी समस्या का समाधान करना चाहिए:

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

यह वर्तमान मार्ग और सभी क्वेरी पैरामीटर जो साथ विलय कर रहे हो जाता है जिसे आप जोड़ते हैं उससे पहले अपडेट करना पसंद करते हैं।

+2

धन्यवाद! यह हल करता है :) –

+0

बढ़िया! इसने मेरी कई समस्याओं का समाधान किया: – Rvanlaak

+0

आप ... मुझे आपको पसंद है ^^ –

2

सिम्फनी/ट्विग path फ़ंक्शन वैकल्पिक पैरा स्वीकार करता है। यदि ये पैरा मार्ग का हिस्सा हैं, तो उन्हें राउटर द्वारा नियंत्रित किया जाता है लेकिन यदि वे नहीं हैं, तो उन्हें जीईटी पैरामीटर के रूप में पारित किया जाता है।

तो, अपने संगत रास्ते है अगर, उदाहरण के लिए, my_route के लिए:

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

के लिए एक अलग मान के साथ पुनर्निर्माण करना चाहता हूं, लेकिन अगर मेरे पास 6 पैरामीटर की सूची है तो क्या होगा? मुझे सभी पैराम्स के लिए लिंक बनाने की ज़रूरत है? उत्पन्न लिंक

सबमिट करके प्राप्त होता है ... –

+0

पेसी - मैंने प्रश्न स्पष्ट करने के लिए संपादित किया। –

+0

@insertusername यहां आपका उत्तर है। यह अनुरोध पैरामीटर रखता है और केवल उन लोगों को प्रतिस्थापित करता है जिन्हें आप बदला जाना चाहते हैं। – AlterPHP

संबंधित मुद्दे