2009-06-27 11 views
5

मैं ज़ेंड राउटर का उपयोग करके सबडोमेन बनाने की कोशिश कर रहा हूं, और फिर सबडोमेन के तहत प्रत्येक अनुभाग के लिए, जैसे subdomain.site.com/section/ मैं एक और मार्ग बना रहा हूं और फिर इसे सबडोमेन रूट पर ले जाने की कोशिश कर रहा हूं। लेकिन मुझे नहीं पता कि कैसे। मैंने उन सभी दस्तावेजों को पढ़ा है जो मुझे मिल सकता है और सभी मंच, लेकिन यह मुझे अपने आप को समझने के लिए प्रेरित करता है।मैं रूटिंग आईएनआई फ़ाइल में ज़ेंड फ्रेमवर्क में सबडोमेन के लिए रूटिंग चेन कैसे लिखूं?

Catchable fatal error: Argument 2 passed to Zend_Controller_Router_Rewrite::addRoute() must implement interface Zend_Controller_Router_Route_Interface, null given, called in /var/local/zend/library/Zend/Controller/Router/Rewrite.php on line 155 and defined in /var/local/zend/library/Zend/Controller/Router/Rewrite.php on line 93

निम्न कोड के साथ

:

routes.b2b.type = "Zend_Controller_Router_Route_Hostname" 
routes.b2b.route = "sales.sitename.com" 
routes.b2b.defaults.module = b2b 
routes.b2b.defaults.controller = index 
routes.b2b.defaults.action = index 

routes.b2b_signup.type = "Zend_Controller_Router_Route_Static" 
routes.b2b_signup.route = "/signup" 
routes.b2b_signup.defaults.controller = "index" 
routes.b2b_signup.defaults.action = "signup" 

routes.b2b_login.type = "Zend_Controller_Router_Route_Chain" 
routes.b2b_login.chain = b2b_signup 

मैं कैसे नेट पर कहीं भी एक INI फ़ाइल के साथ इस चेनिंग करने के लिए का एक उदाहरण नहीं मिल सकता है अब तक, मेरे प्रयास बस मुझे इस त्रुटि मिलती है। संपूर्ण एप्लिकेशन रूटिंग कॉन्फ़िगरेशन के लिए आईएनआई में लिखा गया है, इसलिए मैं इसे किसी सरणी आधारित कॉन्फ़िगरेशन (या उस मामले के लिए एक्सएमएल) पर स्विच नहीं कर सकता, जिसमें इंटरनेट पर 100% उदाहरण हैं।

मैं सरणी के रूप में यह कर सकता है

हैं, तो मैं सिर्फ यह कह सकते हैं:

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    'sales.sitename.com', 
    array(
     'controller' => 'index', 
     'module'  => 'b2b', 
     'action'  => 'index' 
    ) 
); 

$hostnameRoute = new Zend_Controller_Router_Route_Static(
    '/signup', 
    array(
     'controller' => 'index', 
     'module'  => 'b2b', 
     'action'  => 'signup' 
    ) 
); 
    $chainedRoute = new Zend_Controller_Router_Route_Chain(); 
    $chainedRoute->chain($b2b_signup) 

किसी को भी कैसे एक INI फ़ाइल में ऊपर करने के बारे में किसी भी विचार है?

उत्तर

11

यहाँ मूल रूप से तुम क्या चाहते हो, INI प्रारूप में:

routes.b2b.type = "Zend_Controller_Router_Route_Hostname" 
routes.b2b.route = "sales.sitename.com" 
; you could specify a default module (or anything) to use for the whole 
; route chain here, like so: 
; routes.b2b.defaults.module = "default" 

routes.b2b.chains.signup.type = "Zend_Controller_Router_Route_Static" 
routes.b2b.chains.signup.route = "/signup" 
routes.b2b.chains.signup.defaults.controller = "index" 
routes.b2b.chains.signup.defaults.action = "signup" 

routes.b2b.chains.anotherroute.route = "/something/:foo" ; etc, etc. 
routes.b2b.chains.anotherroute.defaults.action = "foo" 
routes.b2b.chains.anotherroute.defaults.controller = "index" 
routes.b2b.chains.anotherroute.defaults.foo = "bar" 
routes.b2b.chains.anotherroute.reqs.foo = '[a-z]+' 

यह आप निम्नलिखित मार्गों दे देंगे: b2b-signup, और b2b-anotherroute

यहाँ मार्ग श्रृंखलन पर कुछ महत्वपूर्ण नोट है:

जब मार्गों एक साथ चेन, बाहरी मार्ग के मापदंडों भीतरी मार्ग के मापदंडों की तुलना में उच्च प्राथमिकता दी जाती है। इस प्रकार यदि आप बाहरी और आंतरिक मार्ग में नियंत्रक को परिभाषित करते हैं, तो बाहरी मार्ग के नियंत्रक का चयन किया जाएगा।

अभिभावक/बच्चे के जंजीर मार्ग के नाम हमेशा एक डैश के साथ संयोजित होते हैं! तो, ऊपर दिए गए उदाहरण की तरह, b2b.chains.signupb2b-signup नामक एक मार्ग बन गया है (जिसे आप यूआरएल असेंबली आदि के लिए उपयोग कर सकते हैं)।

आप चेनिंग रख सकते हैं! श्रृंखलाओं की श्रृंखला में चेन हो सकते हैं।

जंजीर मार्गों के बच्चे वाइल्डकार्ड के साथ काम नहीं करते हैं। #ZF-6654 देखें। यहां blog post है जो इस बारे में बात करता है कि यह एक बड़ा सौदा क्यों नहीं हो सकता है।

+0

यह वही जवाब है जिसे मैं ढूंढ रहा था। आपने वास्तव में मेरी मदद की है क्योंकि मैंने कुछ महीने पहले जेडएफ के साथ काम करना शुरू कर दिया था और इंटरनेट पर सचमुच कुछ भी नहीं है जो मुझे मिल सकता है (मुझे लगता है कि इस पोस्ट तक) यह बताता है कि आईएनआई में ऐसा कैसे किया जाए। आपका बहुत बहुत धन्यवाद! क्या आप जेडएफ के लिए किसी भी अच्छी किताब की सिफारिश कर सकते हैं? – Dan

+1

नहीं, दुख की बात है। मैंने ज़ेंड फ्रेमवर्क के बारे में किसी भी पुस्तक (या पुस्तक?) को कभी नहीं पढ़ा है। उस ने कहा, एक्शन http://www.zendframeworkinaction.com/ में रॉब एलन का ज़ेंड फ्रेमवर्क अच्छा होना चाहिए। हालांकि, तेजी से गति के कारण जेडएफ के साथ विकास होता है, किताबें तेजी से पुरानी हो जाती हैं; बहुत तेज़। उदाहरण के लिए, रूट चेन, ज़ेंड_एप्लिकेशंस या ज़ेंड_Tool के बारे में कुछ भी उस पुस्तक में नहीं होगा। – jason

+0

"आप चेनिंग रख सकते हैं! चेन की चेन चेन हो सकती है।" मैं सोच रहा था एक सही तरीका है जो: 1. routes.b2b.chains.anotherroute.chains.yetanotherroute ... 2. routes.anotherroute.chains.yetanotherroute ... –

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