MageStackDay โบนัสคำถามสำหรับ 500pts Bounty และความเป็นไปได้ในการชนะใบอนุญาต Z-Ray ฟรีเป็นเวลาหนึ่งปี สามารถอ่านข้อมูลเพิ่มเติม >> ที่นี่ <<
คำถามมีให้ / ได้รับแรงบันดาลใจจากนักพัฒนาหลัก Magento 2 Anton Kril
คำถาม:
ฉันกำลังสร้างส่วนขยายที่มีการกำหนดค่าแยกต่างหาก
ซึ่งหมายความว่าฉันไม่สามารถใช้config.xml
หรือroutes.xml
หรือfieldset.xml
หรือไฟล์อื่น ๆ ที่ magento config มี
ตัวอย่าง.
สมมติว่าฉันกำลังกำหนดค่า 'ตาราง' ที่มีแถวคอลัมน์ ฉันสามารถใช้ xml ด้านล่างนี้ (เรียกมันว่า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>
แต่ถ้ามีนามสกุลอื่น ๆtable.xml
ฉันต้องการให้มันถูกเลือกโดยผู้อ่าน config และควรรวมไฟล์ xml 2 ไฟล์ขึ้นไป ฉันหมายถึงว่าไฟล์ที่สองมีลักษณะเช่นนี้
<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>
ผลลัพธ์จะเป็นว่าคอลัมน์ที่สองถูกเพิ่มในแถวแรกและค่าสำหรับattr1
ถูกเขียนทับโดย xml ที่สอง:
<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>
ใน Magento 1 ฉันสามารถทำได้เพียงแค่โทรหา
$merged = Mage::getConfig()->loadModulesConfiguration('table.xml')
->applyExtends();
ฉันจะทำเช่นเดียวกันสำหรับ Magento 2 ได้อย่างไร
Dom
ตัวอย่างชั้น ฉันเริ่มทำงานโดยใช้คำตอบในReader
ชั้นเรียน ในระหว่างนี้ฉันได้รีเฟรชหน้าคำถามและตระหนักว่าคุณทำอย่างนั้น :-) +1