Domanda

In Magento 2, che caso uso di.xml e come utilizzare di.xml for Module?

Qualcuno sapeva, per favore mostrami passo dopo passo.

È stato utile?

Soluzione

What case We use di.xml ?

    .
  • Possiamo usare la preferenza di.xml per (riscrittura) di una particolare classe.
  • Possiamo inviare nuove o sostituire la classe esistente Argomenti .
  • Usa i plugin per fare alcune cose prima, dopo e intorno alla funzione
  • Utilizzando virtualTypes creando una sotto-classe di un'altra classe.

Facciamo un rapido esempio da Magento 2 Modulo cliente.

1.preference

<preference for="Magento\Customer\Api\AddressRepositoryInterface"
            type="Magento\Customer\Model\ResourceModel\AddressRepository" />
.

Sopra il codice, quando qualcuno ti chiede di istanziare un Magento\Customer\Api\AddressRepositoryInterface, istanziare un magento \ cliente \ modello \ Resourcemodel \ AddressRepository Oggetto (l'attributo del tipo).

La configurazione delle preferenze di classe non è solo per le interfacce che possiamo cambiare anche le classi reali.

<preference for="Magento\Customer\Model\CustomerManagement"
            type="Magento\Customer\Model\customModel" />
.

È possibile creare una classe di "customModel" per "Personalizzazione" e fare le modifiche. Sistema di preferenza di classe come sostituzione del sistema di riscrittura della classe.

http://alanstorm.com/magento_2_object_manager_preferences

2. Argomenti

<type name="Magento\Customer\Model\ResourceModel\Group" shared="false">
    <arguments>
        <argument name="groupManagement" xsi:type="object">Magento\Customer\Api\GroupManagementInterface\Proxy</argument>
    </arguments>
</type>
.

In il codice sopra, stiamo inviando oggetto come argomento, stiamo dicendo sistema per inserire la classe "proxy" come oggetto con il nome di groupManagement. Inoltre, possiamo utilizzare gli argomenti per sostituire anche l'argomento esistente.

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>
.

Nel codice sopra, public function clean($object) nella classe visitatore è chiamato dopo la funzione pubblica afterClean(Visitor $subject, $logResourceModel) che è in classe Log.

4 Tipi virtuali

La creazione di un tipo virtuale è una sorta di come creare una sottocassezza per una classe esistente.

Per ulteriori note, per favore, passa attraverso gli esempi pratici alcuni che ho menzionato come collegamenti di Alan, per esercitarsi puoi ottenere un'esperienza più chiara.

Spero che questo aiuti .... :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top