MageStackDay Bonusfrage für 500 Punkte Kopfgeld UND die Möglichkeit, eine kostenlose Z-Ray-Lizenz für ein Jahr zu gewinnen. Weitere Infos finden Sie >> hier <<
Die Fragen wurden vom Magento 2-Kernentwickler Anton Kril gestellt / inspiriert.
Frage:
Ich erstelle eine Erweiterung mit einem separaten Satz von Konfigurationen.
Dies bedeutet, dass ich keine config.xml
oder routes.xml
oder fieldset.xml
andere Konfigurations-XML-Dateien von Magento verwenden kann.
Beispiel.
Angenommen, ich definiere eine 'Tabellen'-Konfiguration, die Zeilen und Spalten enthält. Ich könnte diese XML unten verwenden. (nenn es 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>
Aber wenn eine andere Erweiterung enthält, table.xml
möchte ich, dass sie vom Konfigurationsleser abgeholt wird und die 2 oder mehr XML-Dateien zusammengeführt werden. Ich meine, wenn die zweite Datei so aussieht
<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>
Das Ergebnis ist, dass die zweite Spalte zur ersten Zeile hinzugefügt wird und der Wert für attr1
von der zweiten XML-Datei überschrieben wird:
<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>
In Magento 1 hätte ich dies einfach durch einen Anruf tun können
$merged = Mage::getConfig()->loadModulesConfiguration('table.xml')
->applyExtends();
Wie kann ich dasselbe für Magento 2 tun?
Dom
Klassenbeispiel gesehen. Ich fing an, unter Verwendung desReader
Unterrichts an Antworten zu arbeiten . In der Zwischenzeit habe ich die