¿Dónde puedo encontrar una lista completa de los eventos de Magento?
-
16-10-2019 - |
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?
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. ~ _ ~
Hay un hoja de trucos aquí también http: // mikebywaters .wordpress.com / 2012/07/23 / magento-caso-observador-list /
http://www.magentocommerce.com/wiki/5_-_modules_and_development/ referencia / magento_events
Aquí puede encontrar una lista completa de los eventos del observador.
Consulte estas hojas de trucos
https://www.nicksays.co.uk / magento-eventos-tramposo-hoja-1-8 / http://rabee.me/codes/magento/cheatsheet/1.9/
Será útil para usted.
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
Puede encontrar todos los eventos magento-1x siguiendo URL. https://magento2.atlassian.net/ wiki / pantalla / m1wiki / Magento + 1.x + Eventos + de referencia