2012-08-02 13 views
7

मेरे पास my routing.yml में पैरामीटर _locale आवश्यकताओं को प्रत्येक मार्ग में निर्दिष्ट किया गया है और मुझे लगता है कि इस स्थिति को सरल बनाने के लिए कुछ होना चाहिए।Symfony2 रूट वैश्विक {_locale} आवश्यकताएं

routing.yml

ProjectBaseBundle_index: 
    pattern: /{_locale} 
    defaults: { _controller: ProjectBaseBundle:Default:index } 
    requirements: 
     _locale: en|es 

ProjectBaseBundle_privacy: 
    pattern: /privacy/{_locale} 
    defaults: { _controller: ProjectBaseBundle:Default:privacy } 
    requirements: 
     _locale: en|es 

..... 

ProjectBaseBundle_legal: 
    pattern: /legal/{_locale} 
    defaults: { _controller: ProjectBaseBundle:Default:legal } 
    requirements: 
     _locale: en|es 

मैं Symfony2.1 बीटा उपयोग कर रहा हूँ 3

संभव है मेरी सभी मार्गों के लिए एक वैश्विक _locale आवश्यकताओं को निर्दिष्ट करने के लिए?

+0

सिम्फनी के किस संस्करण पर आप काम कर रहे हैं? – j0k

+0

सिम्फनी 2.1, मैंने इसका उल्लेख नहीं किया क्योंकि मैंने सोचा था कि फ्रेमवर्क – unairoldan

उत्तर

11

मुझे लगता है कि ऐसा करने के लिए एक तरह से पता चला है सिम्फोनी के 2.1 संस्करण का बीटा 4 चला की आवश्यकता होगी। चूंकि मेरे बंडलों में आमतौर पर बहुत अधिक जानकारी होती है, इसलिए मैं अलग-अलग "मॉड्यूल" में नियंत्रकों, संसाधनों और मार्गों को अलग कर रहा हूं। कि दृष्टिकोण के परिणाम के रूप में, मैं इस खोज की है:

मास्टर routing.yml

ProjectBaseBundle_default: 
    resource: "@ProjectBaseBundle/Resources/config/routing-default.yml" 
    prefix: /{_locale}/project/ 
    requirements: 
     _locale: en|es|de|fr 

बाल मार्ग-default.yml

ProjectBaseBundle_default_privacy: 
    pattern: /privacy 
    defaults: { _controller: ProjectBaseBundle:Default:privacy } 

ProjectBaseBundle_default_legal: 
    pattern: /legal 
    defaults: { _controller: ProjectBaseBundle:Default:legal } 

ProjectBaseBundle_default_usage: 
    pattern: /usage 
    defaults: { _controller: ProjectBaseBundle:Default:usage } 

इस मार्ग config के साथ, मैं कम से कम उन स्थानों को जहां लोकेल आवश्यकताओं को लिखने की आवश्यकता है।

+1

यह एक शानदार समाधान है। धन्यवाद। –

+1

यह बहुत उपयोगी है। लेकिन मैं घूमता हूँ। क्या होगा यदि मैं चाहता हूं कि स्थानीय लोगों में से एक डिफ़ॉल्ट हो ('es' कहें) ताकि मेरे पास/परियोजना/गोपनीयता जैसे मार्ग हो सकें ('एन' लोकेल में स्पष्ट रूप से इंगित करें) जबकि मेरे पास अभी भी स्पष्ट/{_ लोकेल}/है। .. अन्य लोकेल के लिए मार्ग। क्या कहने का कोई तरीका है कि 'मास्टर' रूटिंग.मर्ल में? मैं एक डिफ़ॉल्ट _locale के साथ कोशिश कर रहा है ... लेकिन एक इच्छापूर्ण विचार बन गया। – javigzz

+0

का संबंध है मुझे यह नहीं मिला है कि यह कैसे करें। एक बार जब आप पहले/_locale/पैरामीटर के साथ एक रूट आयात करते हैं, तो इसका उपयोग करना आवश्यक है। – unairoldan

0

इस चर्चा पर एक नज़र डालें:

https://groups.google.com/forum/#!topic/symfony-devs/6oxsa7whBps

ऐसा लगता है कि यह है कि तुम क्या जरूरत के लिए इसी तरह कुछ करने के लिए संभव है, {_locale} पैरामीटर की शुरुआत में निर्दिष्ट किया जाता है ही नहीं मार्ग, अंत में नहीं।

मार्ग config आयात करने के लिए एक "मास्टर" मार्ग का उपयोग करना: इसके अलावा, आप (फेबियन के अनुसार)

+0

फ्रेमवर्क की "पुरानी" कार्यक्षमता थी, मैंने इस चर्चा को देखा है, लेकिन जून 2011 में – unairoldan

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