Consulente ecommerce

Professionalità ed esperienza al servizio del tuo E-commerce!

magento

No public Twitter messages.





In che modo si può sovrascrivere un controller dell’amministrazione?
Capita a volte di dovere sovrascrivere alcuni controllers dell’amministrazione, ad esempio, come è capitato oggi a me per dovere creare le fatture con un numero a scelta da parte dell’amministratore.
Per sovrascrivere sono necesari 3 passi:

  1. Creare un modulo
  2. Configurare il modulo nel suo config.xml in modo da dirgli di sovrascrivere un determinato controller
  3. Creare un controller che estende un altro controller, ovvero quello che si vuole riscrivere

Il punto 1 ed il punto 2 si risolvono creando un file di configurazione come il seguente:

<?xml version="1.0" encoding="utf-8"?>
<config>
    <modules>
        <Iacopop_Adminhtml>
            <version>0.2.0</version>
        </Iacopop_Adminhtml>
    </modules>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Iacopop_Adminhtml before="Mage_Adminhtml">Iacopop_Adminhtml</Iacopop_Adminhtml>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

Come si può notare nel file sto indicando che nella sezione routers dell'amministrazione magento (adminhtml) venga caricato prima il modulo Iacopop_Adminhtml (prima di Mage_Adminhtml).
Avendo indicato a Magento di caricare prima il mio modulo non dovrò fare altro che creare un controller che estende il controller che mi interessa. Nel mio caso volevo sovrascrivere il controller che genera la fattura per andare a modificare il numero di fattura prima della sua creazione. Andiamo a vedere come creare il nuovo controller:

<?php

include_once("Mage/Adminhtml/controllers/Sales/Order/InvoiceController.php");

class Iacopop_Adminhtml_Sales_Order_InvoiceController extends Mage_Adminhtml_Sales_Order_InvoiceController {
    /**
     * Save invoice
     * We can save only new invoice. Existing invoices are not editable
     */
    public function saveAction()
    {
        //questo è il codice originale di magento della action save del controller Mage_Adminhtml_Sales_Order_InvoiceController
        //possiamo inserire qua tutto il codice che ci permettere di sovrascrivere il metodo originale
        codice ........

    }
}

?>

Includendo il controller originale e estendendolo è possibile sovrascrivere tutti le funzioni e metodi di questo facendo in modo che tutte le azioni passino per il nuovo controller.

Articoli correlati


Login with Facebook:

Soluzioni POS (point of sale)

Parlare di POS (dall'inglese "Point of Sale"), significa fare riferimento ...

Ottimizzare i propri feed vers

Se avete molti feed prodotti saprete già che mantenerli ed ...

Magento Community Edition Vs M

Quando si decide di far crescere il proprio business e ...

L'evoluzione di Internet in 10

Ecco una interessante infografica che mostra come si è evoluto ...

Misurare le performance del co

In questo breve post vi mostrerò come misurare le performance ...