2012-07-11 10 views
13

routing.yml आप जैसे काम कर सकें में:routing.yml में पैरामीटर के साथ रीडायरेक्ट कैसे करें?

redirect_old_url_to_new: 
    pattern: /old-pattern 
    defaults: 
     _controller: FrameworkBundle:Redirect:urlRedirect 
     path: /new-pattern 
     permanent: true 

कौन सा यूआरएल /new-pattern को /old-pattern रीडायरेक्ट करेगा। हालांकि, अगर मैं एक पैरामीटर है, कैसे पैरामीटर नया पथ, उदा .:

redirect_old_url_to_new: 
    pattern: /old-pattern/{page} 
    defaults: 
     _controller: FrameworkBundle:Redirect:urlRedirect 
     path: /new-pattern/{page} 
     permanent: true 

यह काम नहीं कर रहा है और सचमुच /new-pattern/{page} पर रीडायरेक्ट करेगा और इसलिए /old-pattern/23 से /new-pattern/{page} पर रीडायरेक्ट करेगा में अनुवाद किया जा सकता।

उत्तर

16

पैरामीटर नाम समान है, तो पैरामीटर स्वचालित रूप से पारित हो जाएगा:

FirstRoute: 
    pattern: /firstroute/{page} 
    defaults: 
     _controller: Bundle:Controller:action 

# SecondRoute will redirect to FirstRoute. 
# ex: /secondroute/1 redirects to /firstroute/1    
SecondRoute: 
    pattern: /secondroute/{page} 
    defaults: 
     _controller: FrameworkBundle:Redirect:redirect 
     route: FirstRoute 
     permanent: true 
+0

यदि गंतव्य मार्ग पर रीडायरेक्ट किए जाने वाले मार्ग से कम पैरामीटर हैं तो क्या यह अभी भी काम करेगा? – DevZer0

+0

यह काम करेगा लेकिन अतिरिक्त पैरामीटर यूआरएल के लिए क्वेरी पैरामीटर के रूप में समाप्त होते हैं। – DavidLin

+1

@ डेविडिन: सिम्फनी 2.8 (शायद पिछले संस्करण भी) में, आप 'ignoreAttributes' कुंजी को 'डिफ़ॉल्ट' में सेट करके अतिरिक्त पैरामीटर को अनदेखा कर सकते हैं। उदाहरण के लिए, 'अनदेखा करें: [नाम, आयु]' अतिरिक्त 'नाम' और 'आयु' पैरामीटर को अनदेखा कर देगा, इसलिए वे URL में दिखाई नहीं देंगे। – conradkdotcom

4

लगता में Symfony बुक

root: 
    pattern:/
    defaults: 
     _controller: FrameworkBundle:Redirect:urlRedirect 
     path: /app 
     permanent: true 

के रूप में शस्त्र कहा कहीं कोई गलती है की तरह, यह "FrameworkBundle है: रीडायरेक्ट: रीडायरेक्ट "और नहीं" फ्रेमवर्कबंडल: रीडायरेक्ट: urlRedirect "

0

आप इस तरह की .iml में रूट को रीडायरेक्ट कर सकते हैं:

root: 
    path: redirected_path 
    defaults: 
     _controller: FrameworkBundle:Redirect:urlRedirect 
     path: destination_path 
     permanent: true|false 

या

root: 
    path: redirected_path 
    defaults: 
     _controller: FrameworkBundle:Redirect:redirect 
     route: destination_route_name 
     permanent: true|false 
1

मैं गलत पहले किया गया था, यह मेरे लिए काम करता है:

redirection: 
    path: /exercices.html 
    defaults: 
     _controller: FrameworkBundle:Redirect:redirect 
     route: blog 
     slug: url-of-the-post 
     permanent: true 

route के तहत सीधे parameter_name: parameter_value रखो।

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