Domanda

di Magento 2 codice di base , sembra che il vecchio sistema di classe riscrittura è stato strappato fuori e sostituito con un nuovo sistema di iniezione di dipendenza.

Purtroppo, non c'è alcuna documentazione per questo nuovo sistema.

Qualcuno ha un esempio di configurazione del modulo che avrebbe permesso a un utente, in Magento 2, "riscrivere" la Mage_Catalog_Model_Product classe con una nuova classe di Packagename_Modulename_Model_Product, utilizzando il nuovo sistema di iniezione di dipendenza?

È stato utile?

Soluzione

configurazione

Di è stato spostato a file di.xml, e il formato è stato modificato. Ora preferenze simile a questa (di.xml):

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

Altri suggerimenti

di lavoro dall'interno verso l'esterno, sono stato in grado di ottenere un lavoro di riscrittura con il seguente

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

Tuttavia, c'è molto di più codice sistemi nell'implementazione iniezione di dipendenza, quindi non è chiaro se quanto sopra lavoro sarà nella versione finale rilasciata di Magento 2.

Lei ha ragione, riscritture di classe sono stati completamente eliminati e sostituiti con DI. Le note che seguono sono dalla sezione Application Framework cambia :

Magento 1.x - Nodo: / globale // {sub-percorso che corrisponde al nome di fabbrica + "riscrivere" letterale}

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

Magento 2.x - Nodo: / global / di / alias

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

Non ho provato utilizzando questo in un modulo in esecuzione in Magento 2.0, ma sembra che fondamentalmente definire un alias per il nome della classe invece di utilizzare la complicata gerarchia di XML per riscritture per-modulo.

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