2009-12-17 36 views
18

¿Cómo puedo agregar un evento personalizado en Magento como "done_some_thing"?Eventos personalizados en Magento

estoy de codificación para un carrito de la compra que le da un cierto% de descuento para los clientes que viene a través de un enlace en particular, y quiero mostrar la misma tanto en la compra y la Página del pago

Respuesta

31

Para enviar un evento, utilice el Mage::dispatchEvent función (%magento%/app/Mage.php around line 425). Las llamadas se ven así:

$data = array('somedata' => 'foo', 'layout' => $this->getLayout()); 
Mage::dispatchEvent('my_event_name', $data); 

Con el fin de observar un evento, especifique el observador en el archivo config.xml de su extensión.

<config> 
    <global> 
     <events> 
      <my_event_name> 
       <observers> 
        <myextension> 
         <type>singleton</type> 
         <class>myextension/observer</class> 
         <method>someMethodName</method> 
        </myextension> 
       </observers> 
      </my_event_name> 
     </events> 
    </global> 
</config> 

crear una clase y el método (Observer.php) correspondiente y ya está listo para ir:

class Myextension_Model_Observer { 
    public function someMethodName($event) { 
     $layout = $event->getLayout(); 
     $someData = $event->getSomedata(); 
    } 
} 
+0

Esta es la explicación más simple. +1 –

+0

Siguiente: [Devolver datos al despachador del observador del evento en Magento] (http://stackoverflow.com/q/13277121/367456);) – hakre

Cuestiones relacionadas