Sé que Magento tiene un sistema similar a un gancho llamado eventos. ¿Alguien tiene una lista completa o un script que pueda usarse para determinar a qué eventos se puede llamar?
Sé que Magento tiene un sistema similar a un gancho llamado eventos. ¿Alguien tiene una lista completa o un script que pueda usarse para determinar a qué eventos se puede llamar?
Respuestas:
No hay una lista de todos los eventos de magento, porque la mayoría de los eventos se nombran dinámicamente.
Si me preguntas, conocer estos eventos clave (y las consecuencias) es un buen punto de partida (además de la lista de Nick):
Cada objeto extendido desde Mage_Core_Model_Abstract distribuye muchos eventos relacionados con la carga, el guardado y la eliminación:
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 agregar cheques, después de cargar el objeto
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
para agregar datos adicionales al objeto antes de guardarlo
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 que se guardó el "padre"
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
limpiar antes de eliminar el modelo
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
limpiar, antes de que se elimine el modelo, ¿o tal vez después? ¡Todavía estás aquí 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 quiere estar seguro de que la entidad fue eliminada
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 extendidas desde Mage_Core_Model_Resource_Db_Collection_Abstract también tienen dos eventos genéricos:
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 agregar 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
_eventPrefix
eventos para el modelo, los eventos de solicitud específicos, los eventos de bloque genéricos ocasionalmente útiles y la importancia de iniciar sesión para encontrar eventos
app/code/core/Mage/Core/Model/App.php
y mage::log($eventName,null,'events.txt',true);
al dispatchEvent
método. Cargue la página que estoy tratando de observar. Obviamente, no deje esto como está y revierta una vez que se haya creado su var / logs / events.txt. Sucio sí. Rápido si. :)
Haga lo sangriento grep 'Mage::dispatchEvent' app/ -rsn
Esto le proporcionará una lista de eventos específicos para su instalación, ya que la lista de eventos puede variar según la versión de Magento, las personalizaciones y las extensiones instaladas.
sales_order_place_after
sucederá, pero parece que la llamada para disparar está comentada Checkout/Type/Onepage.php
.
Lo uso como una buena hoja de trucos http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ . Tiene todos los eventos que se pueden llamar en 1.7.
Sé que esta pregunta ha sido respondida, solo agrego mi camino aquí:
public static function dispatchEvent
(ln: ~ 446) al principio agrego
//Mage::log($name, null, 'events.log', true);
¡Luego abre var / log / events.log (~ 40kb) y ve un montón de eventos solo en esa página! :)
La respuesta ya ha sido aceptada pero publicaré mi respuesta de todos modos para el futuro:
Si desea ver la lista de eventos que Magento tiene, tiene 3 opciones:
1) Google para ello, hay muchas personas que han compilado una lista de eventos de Magento
2) Cree un módulo que se enganche en el controller_action_predispatch
evento que es el evento que se llama antes de que se llame cualquier otro evento. Dentro de este módulo puede registrar algunos eventos que se envían:
Agregue 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 yourmodule / Model / Observer:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
Lo anterior registraría cada evento que se envía ...
3) Si tiene acceso SSH, puede ejecutar el siguiente comando para obtener una descripción general de todos los eventos (y sus archivos donde se envían):
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
, en particular controller_front_init_before
. 2) Este enfoque simplemente no registrará todos los eventos que se envían, ¿es un error tipográfico o una sección incompleta?
Estoy usando Magento Developer Toolbar que tiene una buena característica de mostrar eventos que se pueden observar en la página cargada.
Aquí puede ver la mayoría de los eventos existentes: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Hice un grep en el módulo principal de Mage de Magento, y cumplí una lista,
Lista exhaustiva de eventos de Magento
PD Como se señaló, puede contener eventos que están dentro de las funciones obsoletas de Magento, por lo tanto, verifique el archivo y la referencia de línea antes de la implementación.
Abierto para sugerencias!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
El comando grep enumerado anteriormente generaría duplicados (mucho) y no cubre la lista de prefijos de eventos que se requerirían para comprender los nombres de eventos generados dinámicamente. Estos comandos representan ambas listas con solo valores únicos. Podría agregar la bandera -n como la otra respuesta grep y obtener el número de línea, supongo. Pero la pregunta no preguntaba en qué parte del código estaban todos. ~ _ ~
hay una hoja de trucos aquí también http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Aquí puede encontrar la lista completa de eventos de observación.
Consulte estas hojas de trucos
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
Te será útil.
Puede encontrar toda la lista de eventos de backend + frontend en un solo enlace
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Si alguien alguna vez necesita una lista actualizada, estoy tratando de mantenerla actualizada:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
Puede encontrar todos los eventos de magento-1x siguiendo la url. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference