Cách lấy dữ liệu từ config.xml của mô-đun


14

Trong mô-đun Một Tôi cần phải nhận được một số dữ liệu từ file config.xml của module BC . Có bất kỳ phương pháp hoặc các lớp dành riêng cho việc này?

Đặc biệt tôi cần lấy cấu trúc XML và các giá trị của nút <default>để tôi có thể khôi phục các giá trị mặc định của cấu hình hệ thống của các mô-đun B và C. Dưới đây là ví dụ từ config.xml của mô-đun 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>

Theo như tôi biết Magento tải các tệp cấu hình của tất cả các mô-đun, vì vậy tôi đã tự hỏi có thể dữ liệu này đã được lưu trong bộ nhớ cache và bằng cách nào đó có thể được truy xuất từ ​​bộ đệm không? Nếu không, làm thế nào để lấy nó lập trình?

Câu trả lời:


20

Bạn có thể nhận được một nút nhất định từ cấu hình như thế này.

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

điều này sẽ lấy lại giá trị của

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

Vấn đề là nó không lấy giá trị từ một tệp cụ thể. nó nhận được giá trị từ cấu hình hợp nhất.

Nếu bạn muốn các giá trị từ một tệp cụ thể, hãy làm điều này.

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

Bạn sẽ có trong $xmlbiến tệp xml được tải và bạn có thể sử dụng xpathđể tìm một nút cụ thể.


Giá trị có thể được lấy từ DB nếu nó được định nghĩa trong cột pathtrong core_config_data, quá. Nhưng chỉ trong các tệp cấu hình của XML (đây là các giá trị mặc định)
Victor Aguilar

6

Bạn có thể truy cập vào config.xmlbất kỳ mô-đun thông qua Mage::getConfig. Tất cả các XML được hợp nhất thành một chuỗi để bạn thực sự không thể chỉ định mô-đun chính xác nhưng bạn có thể lọc trên đường dẫn thẻ.

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

Bạn có thể cần thêm một phụ thuộc trong mô-đun A vào mô-đun BC để đảm bảo chúng config.xmlđược tải khi bạn thực thi mã ở trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.