Pertanyaan bonus MageStackDay untuk hadiah 500pts DAN kemungkinan memenangkan lisensi Z-Ray gratis selama setahun. Info lebih lanjut dapat ditemukan >> di sini <<
Pertanyaan diberikan / diinspirasi oleh pengembang inti Magento 2, Anton Kril.
Pertanyaan:
Saya membuat ekstensi yang memiliki serangkaian konfigurasi terpisah.
Ini berarti saya tidak dapat menggunakan config.xml
atau routes.xml
atau fieldset.xml
file konfigurasi xml lainnya yang dimiliki magento.
Contoh.
Katakanlah saya mendefinisikan konfigurasi 'tabel' yang memiliki baris kolom. Saya dapat menggunakan xml ini di bawah. (sebut saja 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>
Tetapi jika ekstensi lain berisi table.xml
saya ingin itu diambil oleh pembaca konfigurasi dan 2 atau lebih file xml harus digabung. Maksud saya jika file kedua terlihat seperti ini
<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>
hasilnya adalah kolom kedua ditambahkan ke baris pertama dan nilai untuk attr1
ditimpa oleh xml kedua:
<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>
Di Magento 1 saya bisa melakukan ini hanya dengan menelepon
$merged = Mage::getConfig()->loadModulesConfiguration('table.xml')
->applyExtends();
Bagaimana saya bisa melakukan hal yang sama untuk Magento 2?
sumber
Dom
contoh kelas. Saya mulai mengerjakan jawaban memanfaatkanReader
kelas. Sementara itu saya menyegarkan halaman pertanyaan dan menyadari Anda melakukannya :-) +1