कस्टम भूमिका वाले उपयोगकर्ता Magento व्यवस्थापक इंटरफ़ेस में कस्टम मेनू आइटम का उपयोग नहीं कर सकते हैं




menu admin (2)

सुनिश्चित करने के लिए खेलने के लिए बहुत सारे कारक हैं - तेज रिज़ॉल्यूशन इस स्वयं को डीबग करना होगा

एप / कोड / कोर / दाना / व्यवस्थापक / ब्लॉक / पृष्ठ / मेनू.फिप` में _buildMenuArray' in पर एक नज़र डालें। कहीं वहाँ आप एक foreach loops जो इस तरह से कुछ शुरू होता है देखना चाहिए

    foreach ($parent->children() as $childName => $child) {
        if (1 == $child->disabled) {
            continue;
        }

        $aclResource = 'admin/' . ($child->resource ? (string)$child->resource : $path . $childName);
        if (!$this->_checkAcl($aclResource)) {
            continue;
        }

        if ($child->depends && !$this->_checkDepends($child->depends)) {
            continue;
        }

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

सौभाग्य!

मैंने कई उप मदों के साथ Magento व्यवस्थापक इंटरफ़ेस के लिए एक कस्टम मेनू आइटम निर्धारित किया है।

यह काफी अच्छी तरह से काम करता है जब व्यवस्थापक अंतरफलक के साथ एक उपयोगकर्ता व्यवस्थापक इंटरफ़ेस में प्रवेश किया जाता है। व्यवस्थापक सभी उप-वस्तुओं को देखता है और उन पृष्ठों तक भी पहुंच सकता है, जिनके लिए आइटम लिंक होते हैं। इनमें से प्रत्येक पृष्ठ एक ग्रिड में डेटाबेस तालिका की सामग्री दिखाती है।

लेकिन जब मैं कस्टम भूमिका का उपयोग करने की कोशिश करता हूं तो समस्याएं होती हैं कस्टम भूमिका में मेनू आइटम और इसके उप आइटम तक पहुंच होती है। अब, जब मैं इस कस्टम भूमिका के साथ एक उपयोगकर्ता के साथ व्यवस्थापक इंटरफ़ेस में लॉगिन करता हूं तो उपयोगकर्ता सभी मेनू आइटम को अपेक्षित रूप से देखता है, लेकिन दो उप आइटमों के लिए उपयोगकर्ता को उप आइटम पर क्लिक करने पर पहुंच से वंचित संदेश मिलता है।

Config.xml से एसीएल और मेनू प्रविष्टि यहां दी गई है

...
    <adminhtml>
        <acl>
            <resources>
                <admin>
                    <children>                      
                        <deliveryservice translate="title">
                            <title>Deliveryservice</title>
                            <sort_order>300</sort_order>
                            <children>
                                <holiday translate="title" module="deliveryservice">
                                    <title>Holidays</title>
                                    <sort_order>5</sort_order>
                                </holiday>
                                <holidayset translate="title" module="deliveryservice">
                                    <title>Holidaysets</title>
                                    <sort_order>10</sort_order>
                                </holidayset>
                                <openinghour translate="title" module="deliveryservice">
                                    <title>Openinghours</title>
                                    <sort_order>20</sort_order>
                                </openinghour>
                                <delivery_address translate="title" module="deliveryservice">
                                    <title>Delivery Areas</title>
                                    <sort_order>30</sort_order>
                                </delivery_address>
                                <minimum_order_value translate="title" module="deliveryservice">
                                    <title>Minimum order value</title>
                                    <sort_order>40</sort_order>
                                </minimum_order_value>
                                <key_value_store  translate="title" module="deliveryservice">
                                    <title>Key Value Store</title>
                                    <sort_order>50</sort_order>
                                </key_value_store>
                                 <ratings  translate="title" module="deliveryservice">
                                    <title>Bewertungen</title>
                                    <sort_order>60</sort_order>
                                </ratings>
                            </children>
                        </deliveryservice>
                    </children>
                </admin>
            </resources>
        </acl>
        <menu>
            <deliveryservice translate="title">
                <title>Deliveryservice</title>
                <sort_order>300</sort_order>
                <children>
                    <holiday translate="title" module="deliveryservice">
                        <title>Holidays</title>
                        <sort_order>5</sort_order>
                        <action>adminhtml/holiday/</action>
                    </holiday>
                    <holidayset translate="title" module="deliveryservice">
                        <title>Holidaysets</title>
                        <sort_order>10</sort_order>
                        <action>adminhtml/holidayset/</action>
                    </holidayset>
                    <openinghour translate="title" module="deliveryservice">
                        <title>Openinghours</title>
                        <sort_order>20</sort_order>
                        <action>adminhtml/openinghour/</action>
                    </openinghour>
                    <delivery_address translate="title" module="deliveryservice">
                        <title>Delivery Areas</title>
                        <sort_order>30</sort_order>
                        <action>adminhtml/deliveryaddress/</action>
                    </delivery_address>
                    <minimum_order_value translate="title" module="deliveryservice">
                        <title>Minimum Order Values</title>
                        <sort_order>40</sort_order>
                        <action>adminhtml/minimumordervalue/</action>
                    </minimum_order_value>
                    <key_value_store  translate="title" module="deliveryservice">
                        <title>Key Value Store</title>
                        <sort_order>50</sort_order>
                        <action>adminhtml/keyvaluestore/</action>
                    </key_value_store>
                    <ratings  translate="title" module="deliveryservice">
                        <title>Bewertungen</title>
                        <sort_order>60</sort_order>
                        <action>adminhtml/ratings/</action>
                    </ratings>
                </children>
            </deliveryservice>
        </menu>
    </adminhtml>
      ...

मेनू आइटम minimum_order_value और key_value_store के लिए समस्या होती है

मुझे समझ में नहीं आता है कि एक व्यवस्थापक सभी पृष्ठों को क्यों पहुंच सकता है लेकिन एक अलग भूमिका नहीं कर सकता। किसी भी विचार क्या समस्या यहाँ हो सकती है?


ठीक है, मैंने समस्या हल की।

यह उप मेनू आइटम और उप मेनू आइटम टैग के नाम से जुड़े नियंत्रक कक्षाओं से संबंधित था।

प्रत्येक नियंत्रक के पास एक पृष्ठ देखने के लिए उपयोगकर्ता की अनुमति की जांच करने के लिए एक _isAllowed() विधि है।

उदाहरण के लिए

protected function _isAllowed(){
    return Mage::getSingleton('admin/session')->isAllowed('deliveryservice/holidayset');
}

इस पद्धति में पैरामीटर के अंतिम भाग (स्लेश के पीछे) को कॉल करने के लिए उपयोग किया जाता है () विधि config.xml में एसीएल और मेनू प्रविष्टियों के लिए उप मेनू आइटम के टैग के नाम के बराबर होना चाहिए।

इसलिए इस उदाहरण के लिए उप मेनू टैग का नाम होना चाहिए <holidayset ...

मेरे दो नियंत्रकों के लिए टैग नाम और पैरामीटर समान नहीं थे।