Come ottenere dati da config.xml di un modulo


14

Nel modulo A ho bisogno di ottenere alcuni dati da file config.xml di moduli B e C . Ci sono metodi o classi dedicati a questo?

In particolare ho bisogno di ottenere la struttura XML e i valori del nodo in <default>modo da poter ripristinare i valori predefiniti della configurazione di sistema dei moduli B e C. Di seguito è riportato l'esempio da config.xml del modulo 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>

Per quanto ne so Magento carica i file config.xml di tutti i moduli, quindi mi chiedevo forse che questi dati siano già memorizzati nella cache e possano essere recuperati dalla cache in qualche modo? In caso contrario, come recuperarlo programmaticamente?

Risposte:


20

È possibile ottenere un determinato nodo dalla configurazione in questo modo.

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

questo dovrebbe recuperare il valore di

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

Il problema è che non recupera il valore da un file specifico. ottiene il valore dalla configurazione unita.

Se vuoi valori da un file specifico, fallo.

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

Avrai nel $xml variabile il file xml caricato e potrai usarlo xpathper trovare un nodo specifico.


Il valore può essere recuperato dal DB se è definito anche nella colonna pathin core_config_data. Ma solo nei file di configurazione dell'XML (questi sono i valori predefiniti)
Victor Aguilar,

6

Puoi accedere a config.xmlqualsiasi modulo tramite Mage::getConfig. Tutti gli XML sono uniti in una stringa, quindi non puoi davvero specificare il modulo esatto ma puoi filtrare sul percorso dei tag.

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

Potrebbe essere necessario aggiungere una dipendenza nel modulo A sul modulo B e C per assicurarsi che config.xmlsia caricata quando si esegue il codice sopra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.