Frage

Stochern Der Kerncode von Magento 2, es sieht so aus, als ob das alte Klassenumschreibungssystem herausgerissen und durch ein neues Abhängigkeitsinjektionssystem ersetzt wurde.

Leider gibt es keine Dokumentation für dieses neue System.

Hat jemand ein Modulkonfigurationsbeispiel, mit dem ein Benutzer in Magento 2 die Klasse „neu schreiben“ kann? Mage_Catalog_Model_Product mit einer neuen Klasse Packagename_Modulename_Model_Product, das neue Abhängigkeitsinjektionssystem verwenden?

War es hilfreich?

Lösung

Die DI -Konfiguration wurde in DI.XML -Dateien verschoben und das Format geändert. Jetzt sehen Einstellungen so aus (di.xml):

<config>
    <preference for="{Interface_Or_Class_Name}" type="{Preferred_Class_Name}" />
</config>

Andere Tipps

Wenn ich von innen nach außen arbeitete, konnte ich eine Umschreibung mit den folgenden Arbeiten bekommen

<global>    
    <di>    
        <preferences>
            <Mage_Catalog_Model_Product>Packagename_Modulename_Model_Product</Mage_Catalog_Model_Product>
        </preferences> 
    </di>
</global>

Es gibt jedoch viel mehr Systemcode in der Implementierung der Abhängigkeitsinjektion, sodass nicht klar ist, ob die oben genannte in der endgültigen veröffentlichten Version von Magento 2 funktioniert.

Sie haben Recht, Klassenumschreibungen wurden vollständig eliminiert und durch DI ersetzt.Die folgenden Anmerkungen stammen aus dem folgenden Abschnitt Änderungen des Anwendungsframeworks:

Magento 1.x — Knoten:/global//{Unterpfad, der dem Fabriknamen + „rewrite“-Literal entspricht}

<global>
...
    <models>
        <core>
            <rewrite>
                <url>My_Module_Model_Url</url>
            </rewrite>
        </core>
    </models>
...
</global>

Magento 2.x — Knoten:/global/di/aliases

<global>
...
    <di>
        <aliases>
            <Mage_Core_Model_Url>My_Module_Model_Url</Mage_Core_Model_Url>
        </aliases>
    </di>
...
</global>

Ich habe nicht versucht, dies in einem Modul zu verwenden, das in Magento 2.0 ausgeführt wird, aber es scheint, dass Sie grundsätzlich einen Alias ​​für den Klassennamen definieren, anstatt die komplizierte XML-Hierarchie für Modulumschreibungen zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top