Pregunta

Yo sé que Magento tiene una forma de gancho sistema llamado eventos. ¿Alguien tiene una lista completa o una secuencia de comandos que se puede utilizar para determinar qué eventos pueden ser llamados?

¿Fue útil?

Solución

No hay una lista de todos los eventos de magento, porque la mayoría de los eventos están dinámicamente con nombre.

Si usted me pregunta, sabiendo estos eventos clave (y las consecuencias) es un buen punto de partida (al lado de la lista de nick):

Cada objeto se extendía desde Mage_Core_Model_Abstract distribuye un lote eventos alrededor de cargar, guardar y borrar:

app/code/core/Mage/Core/Model/Abstract.php:255
Mage::dispatchEvent($this->_eventPrefix.'_load_before', $params);
// e.g. sales_order_load_before, checkout_cart_load_before

Por ejemplo, para añadir controles, después de que el objeto se cargó

app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after

Para añadir datos adicionales al objeto antes de que se guarda

app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before

Para guardar otros modelos después de la "matriz" se salvó

app/code/core/Mage/Core/Model/Abstract.php:466  
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after

la limpieza, antes de que el modelo es suprimido

app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before

la limpieza, antes de eliminar el modelo - o tal vez después? Usted está aquí todavía en la transacción!

app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after

Si usted quiere estar seguro de la entidad se ha eliminado

app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after

Las colecciones se extendían desde Mage_Core_Model_Resource_Db_Collection_Abstract tienen unos dos eventos genéricos también:

Por ejemplo: para cambiar el SQL para cargar la colección:

app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:588
Mage::dispatchEvent($this->_eventPrefix.'_load_before', array(
    $this->_eventObject => $this
));
// e.g. sales_order_status_history_collection_load_before

Por ejemplo: para añadir datos adicionales a los objetos:

app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:637
Mage::dispatchEvent($this->_eventPrefix.'_load_after', array(
    $this->_eventObject => $this
));
// e.g. sales_order_shipment_collection_load_after

Otros consejos

Haga lo grep 'Mage::dispatchEvent' app/ -rsn sangrienta Esto le proporcionará una lista de eventos específicos para su instalación como la lista de eventos puede variar dependiendo de la versión de Magento, personalizaciones y extensiones instaladas.

Puedo usar esto como una buena hoja de trucos http: //www.nicksays. co.uk/magento-events-cheat-sheet-1-7/. Cuenta con todos los eventos que los que puede llamar en 1.7.

Sé que esta pregunta ha sido contestada Acabo de añadir mi camino aquí:

  • preparo página que quiero observar en mi navegador
  • I aplicación abierta / Mage.php
  • para public static function dispatchEvent (ln: ~ 446) en el comienzo añado //Mage::log($name, null, 'events.log', true);
  • descomentar esa línea,
  • actualización de la página que estoy en
  • Comentario de nuevo esa línea

A continuación, abierta var / log / events.log (~ 40 kb) y ver a todo un lote de eventos en esa página! :)

respuesta ya ha sido aceptado, pero mal puesto mi respuesta de todos modos para el futuro:

Si quieres ver la lista de eventos que Magento tiene usted tiene 3 opciones:

1) Google para ello, hay una gran cantidad de personas que han compilado una lista de eventos de Magento

2) Crea un módulo que ganchos en el caso controller_action_predispatch que es el evento que se llama antes de cualquier otro evento se llama. Dentro de este módulo puede registrar algunos eventos que se distribuyen:

añada lo siguiente en config.xml

<events>
    <controller_action_postdispatch>
        <observers>
            <controller_action_after>
                <class>yourmodule/observer</class>
                <method>hookToControllerActionPostDispatch</method>
            </controller_action_after>
        </observers>
    </controller_action_postdispatch>
</events>

Y dentro de la yourmodule / modelo / Observador:

public function hookToControllerActionPostDispatch($observer) {
    Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}

Lo anterior podría registrar cada evento que se distribuye ...

3) Si tiene acceso SSH puede ejecutar el siguiente comando para obtener una visión general de todos los eventos (y sus archivos en los que se envían):

cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/

Estoy utilizando Magento desarrollador barra de herramientas que tiene buena característica de los acontecimientos que muestran que se pueden observar en la página cargada.

A continuación, puede ver la mayoría de los eventos existentes: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events

Me han hecho un grep en el núcleo módulo de Mago de Magento, y cumplido una lista,

exhaustivo Lista de Magento Eventos

P.S. Como a cabo en punta, puede contener eventos que están obsoletas dentro de funciones de Magento, así que compruebe el archivo y la línea de referencia antes de su implementación.

abierto a sugerencias!

grep "::dispatchEvent" -R * | sort -u

grep "eventPrefix" -R * | sort -u

El comando grep cotizada anterior haría que los duplicados (mucho) y no se incluirá la lista de prefijos de eventos que serían necesarios para entender los nombres de los eventos generados dinámicamente. Estos comandos hacen que las dos listas con los valores que aparecen unicamente. Se podría añadir la opción -n al igual que la otra respuesta grep y obtener el número de línea, supongo. Pero la cuestión no preguntó en qué parte del código que estaban. ~ _ ~

http://www.magentocommerce.com/wiki/5_-_modules_and_development/ referencia / magento_events

Aquí puede encontrar una lista completa de los eventos del observador.

Se puede encontrar toda la lista de back-end + frontend eventos con sencillo en el enlace

http://www.magentocommerce.com/wiki/5_-_modules_and_development/ referencia / magento_events

Si alguien necesita alguna vez una lista actualizada, estoy tratando de mantener a éste hasta la fecha:

https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top