I file system.xml
non vengono mai uniti con la configurazione globale. Vengono caricati solo quando Magento crea l'interfaccia utente per la
System -> Configuration
sezione dell'applicazione di amministrazione di back-end. Oltre a questo l'applicazione non ha alcun senso per loro.
Se si desidera afferrare l'etichetta, è necessario caricare la configurazione completa system.xml
da soli. Qualcosa del genere dovrebbe funzionare.
//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'));
Come detto in un'altra risposta in questa discussione, c'è anche una classe adminhtml/config
modello che avvolge una parte di questa logica in un metodo getSection
, così si potrebbe fare qualcosa di simile.
Mage::getSingleton('adminhtml/config')->getSection('dev')->groups->my_module->label
Se si guarda alla fonte di 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;
}
e seguire lo stack delle chiamate fino al _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');
}
Vedrete questo metodo involucro alla fine chiama il metodo in sé loadModulesConfiguration
. Il applyExtends
aggiuntivo se old bit of meta-programming in the configuration you can read about here, che fa parte di a longer series on configuration loading. (link automatici, troppo lunghi per una risposta StackOverflow).
La ragione per cui io personalmente non userei questo per afferrare i valori di configurazione è l'evento che viene inviato quando si effettua la chiamata
Mage::dispatchEvent('adminhtml_init_system_config', array('config' => $config));
Questo evento può innescare codice nel tuo sistema che presuppone sei caricamento del sistema di configurazione del sistema nell'area della console di amministrazione di back-end. Se si solo si desidera leggere l'albero XML. semplicemente caricando te stesso e leggendo i valori sembra la strada da percorrere. Il tuo caso d'uso, ovviamente, può variare.
Trovato una soluzione diversa subito dopo aver postato questo ... qual è la differenza? Perché è meglio usare loadModulesConfiguration invece di getSingleton ('adminhtml/config')? – Benubird
@Benubird Aggiornamento della risposta con ulteriori informazioni e contesto. La versione breve: la tecnica che hai trovato utilizza il metodo 'loadModulesConfiguration' stesso. –