500ptsバウンティのMageStackDayボーナス質問と、1年間無料のZ-Rayライセンスを獲得する可能性。詳細はこちら >>をご覧ください <<
質問は、Magento 2のコア開発者であるAnton Krilによって提供されました。
質問:
個別の構成セットを持つ拡張機能を作成しています。
この手段は、私が使用することはできませんconfig.xml
か、routes.xml
またはfieldset.xml
または持つMagentoの他の設定xmlファイル。
例。
行と列を持つ「テーブル」設定を定義しているとしましょう。この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
構成リーダーでそれを取得し、2つ以上の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>
その結果、2番目の列が最初の行に追加され、値attr1
が2番目の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