In Magento 2: Welchen Fall verwende ich di.xml
und wie verwende ich di.xml
für das Modul?
Jeder wusste, bitte zeig es mir Schritt für Schritt.
In Magento 2: Welchen Fall verwende ich di.xml
und wie verwende ich di.xml
für das Modul?
Jeder wusste, bitte zeig es mir Schritt für Schritt.
Antworten:
What case We use di.xml ?
Nehmen wir ein kurzes Beispiel aus dem Magento 2-Kundenmodul.
1. Bezug
<preference for="Magento\Customer\Api\AddressRepositoryInterface"
type="Magento\Customer\Model\ResourceModel\AddressRepository" />
Wenn Sie über dem Code gefragt werden, Magento\Customer\Api\AddressRepositoryInterface
ob ein Objekt instanziiert werden soll , wird ein Magento \ Customer \ Model \ ResourceModel \ AddressRepository-Objekt (das type-Attribut) instanziiert.
Die Konfiguration der Klassenpräferenzen ist nicht nur für Schnittstellen gedacht, sondern wir können auch die tatsächlichen Klassen ändern.
<preference for="Magento\Customer\Model\CustomerManagement"
type="Magento\Customer\Model\customModel" />
Sie können die Klasse 'customModel' für 'CustomerManagement' erstellen und die Änderungen vornehmen. Class Preference System als Ersatz für das Class Rewrite System.
http://alanstorm.com/magento_2_object_manager_preferences
2. Argumente
<type name="Magento\Customer\Model\ResourceModel\Group" shared="false">
<arguments>
<argument name="groupManagement" xsi:type="object">Magento\Customer\Api\GroupManagementInterface\Proxy</argument>
</arguments>
</type>
Im obigen Code, Wir senden Objekt als Argument, wir sagen System, um "Proxy" -Klasse als Objekt mit dem Namen von einzufügen groupManagement
. Wir können auch Argumente verwenden, um das vorhandene Argument zu ersetzen.
http://alanstorm.com/magento_2_object_manager_argument_replacement
3. Plugin
<type name="Magento\Customer\Model\ResourceModel\Visitor">
<plugin name="catalogLog" type="Magento\Catalog\Model\Plugin\Log" />
</type>
Im obigen Code wird public function clean($object)
in der Besucherklasse nach der öffentlichen Funktion aufgerufen, afterClean(Visitor $subject, $logResourceModel)
die in der Klasse Log enthalten ist.
4 virtuelle Typen
Das Erstellen eines virtuellen Typs ähnelt dem Erstellen einer Unterklasse für eine vorhandene Klasse.
Für weitere Informationen gehen Sie bitte die praktischen Beispiele durch, die ich als Links von Alan erwähnt habe. Durch Übung können Sie klarere Erfahrungen sammeln.
Hoffe das hilft.... :)