วิธีรับข้อมูลจาก config.xml ของโมดูล


14

ในโมดูลฉันจำเป็นต้องได้รับข้อมูลบางส่วนจากไฟล์config.xmlของโมดูลBและC มีวิธีการหรือคลาสพิเศษสำหรับเรื่องนี้หรือไม่?

โดยเฉพาะฉันต้องได้รับโครงสร้าง XML และค่าของโหนด<default>เพื่อให้ฉันสามารถคืนค่าเริ่มต้นของการกำหนดค่าระบบของโมดูล B และ C ด้านล่างเป็นตัวอย่างจาก config.xml ของโมดูล 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>

เท่าที่ฉันรู้ 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เพื่อค้นหาโหนดที่ระบุ


สามารถเรียกคืนค่าจาก DB ได้หากกำหนดไว้ในคอลัมน์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โหลดได้เมื่อคุณกำลังเรียกใช้โค้ดข้างต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.