Bir modülün config.xml dosyasından veri alma


14

Modül A'da B ve C modüllerinin config.xml dosyasından bazı veriler almam gerekiyor . Bunun için ayrılmış yöntemler veya sınıflar var mı?

Özellikle <default>, B ve C modüllerinin sistem yapılandırmasının varsayılan değerlerini geri yükleyebilmem için XML yapısını ve düğüm değerlerini almam gerekiyor.

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

Bildiğim kadarıyla Magento tüm modüllerin config.xml dosyalarını yükler, bu yüzden belki de bu verilerin zaten önbelleğe alınmış olduğunu ve bir şekilde önbellekten alınabileceğini merak ediyordum? Değilse, programlı olarak nasıl alınır?

Yanıtlar:


20

Yapılandırmadan böyle belirli bir düğümü alabilirsiniz.

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

bu değeri

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

Sorun, değeri belirli bir dosyadan almamasıdır. değeri birleştirilmiş yapılandırmadan alır.

Belirli bir dosyadan değer istiyorsanız, bunu yapın.

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

İçeri olacak $xmldeğişken yüklü xml dosyası ve sizin kullanabilirsiniz xpathbelirli bir düğüm bulmak için.


Sütunun tanımlanan, değer DB alınamadı patholarak core_config_datada. Ancak yalnızca XML'in yapılandırma dosyalarında (bu varsayılan değerlerdir)
Victor Aguilar

6

İle config.xmlherhangi bir modüle erişebilirsiniz Mage::getConfig. Tüm XML'ler tek bir dizede birleştirilir, böylece tam modülü tam olarak belirleyemezsiniz ancak etiketler yoluna filtre uygulayabilirsiniz.

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

Sen modülünde bir bağımlılık eklemeniz gerekebilir A modülü üzerindeki B ve C emin onların yapmak config.xmlkod yukarıdaki yürütme yaparken yüklenir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.