Як отримати дані з config.xml модуля


14

У модулі я повинен отримати деякі дані з файлу config.xml модулів B і C . Чи існують для цього якісь методи або заняття?

Особливо мені потрібно отримати структуру XML та значення вузла, <default>щоб я міг відновити значення за замовчуванням системної конфігурації модулів B і C. Нижче наведено приклад з config.xml модуля списку бажань:

<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конкретний вузол.


Значення можна отримати з БД, якщо воно також визначене в стовпці pathв core_config_data. Але лише у конфігураційних файлах XML (це типові настройки)
Victor Aguilar

6

Ви можете отримати доступ до config.xmlбудь-якого модуля через Mage::getConfig. Всі XML об'єднані в одну рядок, так що ви не можете дійсно вказати точний модуль, але ви можете фільтрувати по шляху тегів.

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

Можливо, вам доведеться додати залежність у модулі A від модулів B і C, щоб переконатися, що вони config.xmlзавантажені під час виконання вищевказаного коду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.