Câu hỏi thưởng MageStackDay cho 500pts Bounty VÀ khả năng giành được giấy phép Z-Ray miễn phí trong một năm. Thông tin thêm có thể được tìm thấy >> tại đây <<
Các câu hỏi được cung cấp / lấy cảm hứng từ nhà phát triển cốt lõi Magento 2 Anton Kril.
Câu hỏi:
Tôi đang tạo một tiện ích mở rộng có một bộ cấu hình riêng biệt.
Điều này có nghĩa tôi không thể sử dụng config.xml
hoặc routes.xml
hoặc fieldset.xml
hoặc bất kỳ tập tin cấu hình xml khác Magento có.
Thí dụ.
Giả sử tôi đang xác định cấu hình 'bảng' có các hàng cột. Tôi có thể sử dụng xml này dưới đây. (gọi nó table.xml
)
<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="path/to/table.xsd">
<row id="row1">
<column id="col1" sort="10" attr1="val1">
<label>Col 1</label>
</column>
</row>
<row id="row2">
<column id="col1" sort="10" attr1="val1">
<label>Col 1</label>
</column>
<column id="col2" sort="20" disabled="true" attr1="val2" >
<label>Col 2</label>
</column>
<column id="col3" sort="15" attr1="val1">
<label>Col 3</label>
</column>
</row>
</table>
Nhưng nếu một phần mở rộng khác chứa table.xml
tôi muốn nó được chọn bởi trình đọc cấu hình và 2 hoặc nhiều tệp xml sẽ được hợp nhất. Ý tôi là nếu tập tin thứ hai trông như thế này
<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="path/to/table.xsd">
<row id="row1">
<column id="col2" sort="10" attr1="val2">
<label>Col 2</label>
</column>
</row>
<row id="row2">
<column id="col1" sort="10" attr1="val5" />
</row>
</table>
kết quả sẽ là cột thứ hai được thêm vào hàng đầu tiên và giá trị cho attr1
được ghi đè bởi xml thứ hai:
<table ....>
<row id="row1">
<column id="col1" sort="10" attr1="val1"> <!-- from first xml -->
<label>Col 1</label>
</column>
<column id="col2" sort="10" attr1="val2"><!-- from second xml-->
<label>Col 2</label>
</column>
</row>
<row id="row2">
<column id="col1" sort="10" attr1="val5"><!--they apear in both xmls with the same path and id and second one overrides the value for `attr1`-->
<label>Col 1</label>
</column>
<column id="col2" sort="20" disabled="true" attr1="val2"><!-- from first xml -->
<label>Col 2</label>
</column>
<column id="col3" sort="15" attr1="val1"><!-- from first xml -->
<label>Col 3</label>
</column>
</row>
</table>
Trong Magento 1 tôi có thể thực hiện điều này chỉ bằng cách gọi
$merged = Mage::getConfig()->loadModulesConfiguration('table.xml')
->applyExtends();
Làm thế nào tôi có thể làm tương tự cho Magento 2?
Dom
ví dụ lớp. Tôi bắt đầu làm việc trênReader
lớp sử dụng câu trả lời . Trong lúc đó tôi đã làm mới trang câu hỏi và nhận ra bạn đã làm điều đó :-) +1