Je sais que Magento a un système en forme de crochet appelé événements. Est-ce que quelqu'un a une liste complète ou un script qui peut être utilisé pour déterminer quels événements peuvent être appelés?
Je sais que Magento a un système en forme de crochet appelé événements. Est-ce que quelqu'un a une liste complète ou un script qui peut être utilisé pour déterminer quels événements peuvent être appelés?
Réponses:
Il n'y a pas une liste de tous les événements magento, car la plupart d'entre eux sont nommés dynamiquement.
Si vous me demandez, connaître ces événements clés (et leurs conséquences) est un bon point de départ (à côté de la liste de nick):
Chaque objet étendu de Mage_Core_Model_Abstract distribue de nombreux événements relatifs au chargement, à la sauvegarde et à la suppression:
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
Par exemple, pour ajouter des vérifications après le chargement de l'objet
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
ajouter des données supplémentaires à l'objet avant qu'il ne soit enregistré
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
Pour enregistrer d'autres modèles après que le "parent" a été enregistré
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
nettoyer, avant que le modèle est supprimé
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
nettoyer, avant que le modèle est supprimé - ou peut-être après? Vous êtes ici encore dans la transaction!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
Si vous voulez être sûr que l'entité a été supprimée
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
Les collections étendues à partir de Mage_Core_Model_Resource_Db_Collection_Abstract ont également deux événements génériques:
Par exemple: pour modifier le code SQL afin de charger la collection:
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
Par exemple: pour ajouter des données supplémentaires aux objets:
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
événements de modèle, les événements de demande ciblée, les événements de bloc génériques parfois utiles, et l'importance de la journalisation pour rechercher des événements
app/code/core/Mage/Core/Model/App.php
et mage::log($eventName,null,'events.txt',true);
à la dispatchEvent
méthode. Chargez la page que j'essaie d'observer. Évidemment, ne laissez pas cela tel quel et revenez en arrière une fois que votre var / logs / events.txt est créé. Sale, oui. Vite, oui. :)
Faites le sang grep 'Mage::dispatchEvent' app/ -rsn
Cela vous donnera une liste d'événements spécifiques à votre installation comme la liste des événements peut varier en fonction de la version de Magento, personnalisations et extensions installées.
sales_order_place_after
cela se produira, mais il semble que l’appel à la mise à feu est commenté Checkout/Type/Onepage.php
.
J'utilise cela comme une belle feuille de triche http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ . Il contient tous les événements pouvant être appelés en 1.7.
Je sais que cette question a été répondue je viens d'ajouter mon chemin ici:
public static function dispatchEvent
(ln: ~ 446) au début j'ajoute
//Mage::log($name, null, 'events.log', true);
Ensuite, ouvrez var / log / events.log (~ 40 Ko) et visualisez de nombreux événements sur cette page uniquement! :)
La réponse a déjà été acceptée mais je vais quand même poster ma réponse pour l'avenir:
Si vous voulez voir la liste des événements de Magento, vous avez 3 options:
1) Google pour cela, il y a beaucoup de gens qui ont compilé une liste d'événements de Magento
2) Créez un module qui se raccorde à l' controller_action_predispatch
événement qui est l'événement appelé avant tout autre événement. Dans ce module, vous pouvez enregistrer certains événements distribués:
Ajoutez ce qui suit sur 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>
Et à l'intérieur de votre module / modèle / observateur:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
Ce qui précède consignera tous les événements expédiés ...
3) Si vous avez un accès SSH, vous pouvez exécuter la commande suivante pour obtenir une vue d'ensemble de tous les événements (et de leurs fichiers de destination):
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
, notamment controller_front_init_before
. 2) Cette approche ne consignera tout simplement pas tous les événements envoyés. S'agit-il d'une section ou d'une section incomplète?
J'utilise la barre d'outils de développement de Magento qui offre une fonctionnalité intéressante permettant d'afficher des événements pouvant être observés sur une page chargée.
Ici vous pouvez voir la plupart des événements existants: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
J'ai fait un grep sur le module de base Mage de Magento, et j'ai respecté une liste,
Liste exhaustive des événements Magento
PS Comme indiqué, peut contenir des événements appartenant à des fonctions obsolètes de Magento, il est donc important de vérifier le fichier et la référence de ligne avant la mise en œuvre.
Ouvert aux suggestions!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
La commande grep précédemment répertoriée rendait les doublons (beaucoup) et ne couvrait pas la liste des préfixes d'événements nécessaires à la compréhension des noms d'événements générés dynamiquement. Ces commandes affichent les deux listes avec uniquement des valeurs uniques. Vous pouvez ajouter le drapeau -n comme l'autre réponse de grep et obtenir le numéro de ligne, je suppose. Mais la question ne demandait pas où ils étaient tous dans le code. ~ _ ~
theres une feuille de triche ici aussi http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
http://www.magentocommerce.com/wiki/5___modules_and_development/reference/magento_events
Ici vous pouvez trouver la liste complète des événements d'observateur.
Référez-vous ces feuilles de triche
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
Cela vous aidera.
Vous pouvez trouver toute la liste des événements backend + frontend sur un seul lien
http://www.magentocommerce.com/wiki/5___modules_and_development/reference/magento_events
Si quelqu'un a besoin d'une liste à jour, j'essaie de la tenir à jour:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
Vous pouvez trouver tous les événements magento-1x en suivant l’URL. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference