system.xml
फ़ाइलों को कभी भी वैश्विक कॉन्फ़िगरेशन के साथ विलय नहीं किया जाता है। वे केवल तभी लोड होते हैं जब Magento
System -> Configuration
बैकएंड व्यवस्थापक अनुप्रयोग के अनुभाग के लिए उपयोगकर्ता इंटरफ़ेस बनाता है। इसके अलावा आवेदन के लिए उनके लिए कोई उपयोग नहीं है।
यदि आप लेबल को पकड़ना चाहते हैं, तो आपको पूर्ण system.xml
कॉन्फ़िगरेशन स्वयं लोड करना होगा। ऐसा कुछ काम करना चाहिए।
//load and merge `system.xml` files
$config = Mage::getConfig()->loadModulesConfiguration('system.xml');
//grab entire <sections/> node
var_dump($config->getNode('sections')->asXml());
//grab label from a specific option group as a string
var_dump((string)$config->getNode('sections/dev/groups/restrict/label'));
इस सूत्र में एक और उत्तर में उल्लेख किया है, वहाँ भी एक adminhtml/config
मॉडल वर्ग है जो एक getSection
विधि में इस तर्क के कुछ लपेटता है, तो आप कुछ इस तरह कर सकता है।
Mage::getSingleton('adminhtml/config')->getSection('dev')->groups->my_module->label
आप getSection
#File: app/code/core/Mage/Adminhtml/Model/Config.php
public function getSections($sectionCode=null, $websiteCode=null, $storeCode=null)
{
if (empty($this->_sections)) {
$this->_initSectionsAndTabs();
}
return $this->_sections;
}
के स्रोत को देखो और _initSectionsAndTabs
#File: app/code/core/Mage/Adminhtml/Model/Config.php
protected function _initSectionsAndTabs()
{
$config = Mage::getConfig()->loadModulesConfiguration('system.xml')
->applyExtends();
Mage::dispatchEvent('adminhtml_init_system_config', array('config' => $config));
$this->_sections = $config->getNode('sections');
$this->_tabs = $config->getNode('tabs');
}
के माध्यम से कॉल स्टैक का पालन करें आप इस आवरण विधि अंत में कहता है loadModulesConfiguration
विधि ही देखेंगे । अतिरिक्त applyExtends
यदि old bit of meta-programming in the configuration you can read about here, जो a longer series on configuration loading का हिस्सा है। (स्वयं लिंक, एक स्टैक ओवरफ्लो उत्तर के लिए बहुत लंबा)। जब आप इस कॉल
Mage::dispatchEvent('adminhtml_init_system_config', array('config' => $config));
इस घटना को आपके सिस्टम में कोड गति प्रदान कर सकते मानता है कि आप कर रहे हैं
कारण मैं व्यक्तिगत रूप से इस का उपयोग नहीं होता विन्यास से बाहर मान हड़पने के लिए घटना है कि भेजा है बैकएंड व्यवस्थापक कंसोल क्षेत्र में सिस्टम कॉन्फ़िगरेशन सिस्टम लोड हो रहा है। यदि आप बस XML पेड़ को पढ़ना चाहते हैं। बस इसे स्वयं लोड करना और मानों को पढ़ने का तरीका लगता है। आपका उपयोग केस, ज़ाहिर है, अलग-अलग हो सकता है।
इसे पोस्ट करने के ठीक बाद एक अलग समाधान मिला ... क्या अंतर है? Singleton ('adminhtml/config') प्राप्त करने के बजाय loadModules कॉन्फ़िगरेशन का उपयोग करना बेहतर क्यों है? – Benubird
@ बेनबुर्ड ने अधिक जानकारी और संदर्भ के साथ उत्तर अपडेट किया। संक्षिप्त संस्करण: आपके द्वारा मिली तकनीक 'loadModules कॉन्फ़िगरेशन' विधि का उपयोग करती है। –