के लिए एक ही Magento मार्ग फ्रंटनाम का उपयोग करके मैंने Magento रूटिंग तर्क के साथ एक समस्या की खोज की और मैं यह देखना चाहता हूं कि कोई भी इसकी पुष्टि कर सकता है या नहीं।फ्रंटेंड और व्यवस्थापक राउटर
Magento स्टैक्स राउटर व्यवस्थापक, मानक, फिर डिफ़ॉल्ट और उन्हें एक समय में प्रक्रिया करता है। Magento यूआरएल के आधार पर वर्तमान मॉड्यूल नाम प्राप्त करता है (Mage_Core_Controller_Varien_Router_Standard::match())
देखें, फिर यह जांचता है कि मैगेंटो कॉन्फ़िगरेशन में फ्रंट नाम पर एक मैच के आधार पर मॉड्यूल को इस राउटर द्वारा संभाला जाना चाहिए। यदि कोई मिलान मिलता है, तो यह रूट करता है। , यह अगले रूटर करने के लिए जारी
कॉन्फ़िग अंश:।
<admin> <routers> <myroute> <use>admin</use> <args> <module>MyNamespace_MyModule</module> <frontName>myroute</frontName> </args> </myroute> </routers> </admin> <frontend> <routers> <myroute> <use>admin</use> <args> <module>MyNamespace_MyModule</module> <frontName>myroute</frontName> </args> </myroute> </routers> </frontend>
इसका मतलब यह है कि अगर आप अपने व्यवस्थापक रूटर के रूप में अपने दृश्यपटल रूटर के लिए एक ही नाम का उपयोग करें, व्यवस्थापक रूटर हमेशा पहले मिलान किया जाएगा, यहां तक कि पर फ्रंटेंड पेज। आपका फ्रंटएंड पेज अब व्यवस्थापक base_url
का उपयोग कर एक व्यवस्थापक पृष्ठ के रूप में रूट करेगा, जो आपके स्टोर के यूआरएल से अलग हो सकता है क्योंकि टूटा हुआ रीडायरेक्ट होता है।
ध्यान दें कि यह समस्या Magento उदाहरणों में स्पष्ट नहीं है जहां व्यवस्थापक आधार URL अग्रभूमि आधार URL के समान है।
क्या कोई यह पुष्टि कर सकता है कि राउटर तर्क का मेरा आकलन सही है?
मैं आपके विशिष्ट मुद्दे से बात नहीं कर सकता (मुझे यकीन नहीं है कि मैं इसे पूरी तरह से पालन करता हूं) लेकिन Magento में रूटिंग ने 1 के विचार के चारों ओर जेल करना शुरू कर दिया है। फ्रंटेंड मॉड्यूल के लिए कस्टम फ्रंटनाम का उपयोग करना; 2. व्यवस्थापक मॉड्यूल के लिए फ्रंटनाम "व्यवस्थापक" का उपयोग करना, और नियंत्रकों को अपने नियंत्रकों को जोड़ने के लिए "मॉड्यूल" टैग का उपयोग करके व्यवस्थापक राउटर की तलाश होगी। यदि आप इस पैटर्न से दूर तोड़ते हैं तो आप दर्द में भागने जा रहे हैं। –
मुझे यह समस्या किसी तृतीय पक्ष मॉड्यूल में मिली। यह फ्रंटेंड और व्यवस्थापक क्षेत्रों के लिए एक ही फ्रंटनाम का इस्तेमाल करता था। यह काम करने की अपेक्षा करने के लिए एक उचित चीज की तरह लगता है, यूआरएल में "व्यवस्थापक" स्ट्रिंग होने का अंतर जो व्यवस्थापक स्टोर को लोड करता है। मुद्दा यह था कि फ्रंटएंड पेज को व्यवस्थापक राउटर द्वारा लोड किया जा रहा है, जिससे यह व्यवस्थापक आधार यूआरएल का उपयोग कर सकता है जो फ्रंटेंड बेस यूआरएल से अलग था। दोनों राउटर इस नामकरण संघर्ष को छोड़कर कॉन्फ़िगरेशन के आधार पर अपेक्षा के अनुसार काम करते हैं। – kirkmadera
इस में देखकर मुझे एहसास हुआ कि मॉड्यूल काम नहीं कर रहा था जैसा मैंने सोचा था। यह पूरी तरह से व्यवस्थापक के बाहर अपना खुद का नाम स्थापित कर रहा था। व्यवस्थापक ने वही देखा क्योंकि मॉड्यूल के नियंत्रकों ने Mage_Adminhtml_Controller_Action को बढ़ाया, जिसका प्रीडिस्चैच डिज़ाइन को व्यवस्थापक डिज़ाइन पर मजबूर करता है। आप सही हैं कि सभी व्यवस्थापक नियंत्रकों को ओवरराइड करने के लिए "मॉड्यूल" नोड का उपयोग करके "व्यवस्थापक" फ्रंटनाम के माध्यम से प्रवाह करना चाहिए। यह तीसरा पक्ष मॉड्यूल ग़लत ढंग से स्थापित किया गया है। फिर भी, Magento – kirkmadera