किसी मॉड्यूल के config.xml से डेटा कैसे प्राप्त करें


14

मॉड्यूल ए में मुझे मॉड्यूल बी और सी के फ़ाइल config.xml से कुछ डेटा प्राप्त करने की आवश्यकता है । क्या इसके लिए कोई तरीके या कक्षाएं समर्पित हैं?

विशिष्ट रूप से मुझे XML संरचना और नोड के मान प्राप्त करने की आवश्यकता है <default>ताकि मैं मॉड्यूल बी और सी के सिस्टम कॉन्फ़िगरेशन के डिफ़ॉल्ट मानों को पुनर्स्थापित कर सकूं।

<config>
    <default>
        <wishlist>
            <general>
                <active>1</active>
            </general>
            <email>
                <email_identity>general</email_identity>
                <email_template>wishlist_email_email_template</email_template>
            </email>
        </wishlist>
    </default>
</config>

जहाँ तक मुझे पता है कि Magento सभी मॉड्यूल्स की config.xml फ़ाइलों को लोड करता है, तो मैं सोच रहा था कि शायद यह डेटा पहले से कैश है और किसी तरह कैश से पुनर्प्राप्त किया जा सकता है? यदि नहीं, तो इसे प्रोग्रामेटिक कैसे प्राप्त करें?

जवाबों:


20

आप इस तरह से कॉन्फ़िगर से एक निश्चित नोड प्राप्त कर सकते हैं।

$value = Mage::getConfig()->getNode('default/wishlist/general/active');

इसका मान पुनः प्राप्त करना चाहिए

<default>
    <wishlist>
        <general>
            <active>1</active> <!-- this value -->
        </general>
    </wishlist>
</default>

समस्या यह है कि यह किसी विशिष्ट फ़ाइल से मान प्राप्त नहीं करता है। यह मर्ज किए गए कॉन्फ़िगरेशन से मान प्राप्त करता है।

यदि आप किसी विशिष्ट फ़ाइल से मान चाहते हैं, तो यह करें।

$configFile = Mage::getConfig()->getModuleDir('etc', 'Mage_Wishlist').DS.'config.xml';
$string = file_get_contents($configFile);
$xml = simplexml_load_string($string, 'Varien_Simplexml_Element');

आपके पास $xmlचर भरी हुई xml फ़ाइल होगी और आप xpathएक विशिष्ट नोड खोजने के लिए उपयोग कर सकते हैं ।


मान को DB से पुनर्प्राप्त किया जा सकता है यदि इसे स्तंभ pathमें परिभाषित किया गया है core_config_data, तो भी। लेकिन केवल XML की कॉन्फिग फाइलों में (यह डिफॉल्ट हैं)
विक्टर एगुइलर

6

आप config.xmlकिसी भी मॉड्यूल के माध्यम से पहुँच सकते हैं Mage::getConfig। सभी XML को एक स्ट्रिंग में मिला दिया जाता है ताकि आप वास्तव में सटीक मॉड्यूल निर्दिष्ट न कर सकें लेकिन आप टैग पथ पर फ़िल्टर कर सकते हैं।

$default_xml = Mage::getConfig()
   ->loadModulesConfiguration('config.xml')
   ->getNode('default/wishlist')
   ->asXML(); 

जब आप उपरोक्त कोड को निष्पादित कर रहे हों, तो यह सुनिश्चित करने के लिए आपको मॉड्यूल B और C पर मॉड्यूल A में निर्भरता जोड़ने की आवश्यकता हो सकती है ।config.xml

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.