Comment obtenir des données de config.xml d'un module


14

Dans le module A je besoin d'obtenir des données à partir du fichier config.xml de modules B et C . Y a-t-il des méthodes ou des classes dédiées à cela?

Surtout, j'ai besoin d'obtenir la structure XML et les valeurs du nœud <default>afin de pouvoir restaurer les valeurs par défaut de la configuration système des modules B et C. Ci-dessous, un exemple de config.xml du module Wishlist:

<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>

Autant que je sache, Magento charge les fichiers config.xml de tous les modules, donc je me demandais peut-être que ces données étaient déjà mises en cache et pouvaient être récupérées du cache d'une manière ou d'une autre? Sinon, comment le récupérer par programmation?

Réponses:


20

Vous pouvez obtenir un certain nœud de la configuration comme ceci.

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

cela devrait raviver la valeur de

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

Le problème est qu'il ne récupère pas la valeur d'un fichier spécifique. il obtient la valeur de la configuration fusionnée.

Si vous voulez des valeurs d'un fichier spécifique, faites-le.

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

Vous aurez dans la $xmlvariable le fichier xml chargé et vous pourrez l'utiliser xpathpour trouver un nœud spécifique.


La valeur peut être récupérée à partir du DB si elle est définie dans la colonne pathen core_config_dataaussi. Mais seulement dans les fichiers de configuration XML (ce sont les valeurs par défaut)
Victor Aguilar

6

Vous pouvez accéder à config.xmln'importe quel module via Mage::getConfig. Tous les XML sont fusionnés en une seule chaîne, vous ne pouvez donc pas vraiment spécifier le module exact, mais vous pouvez filtrer sur le chemin des balises.

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

Vous devrez peut-être ajouter une dépendance dans le module A sur les modules B et C pour vous assurer qu'ils config.xmlsont chargés lorsque vous exécutez le code ci-dessus.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.