Question

Je sais que Magento a un système semblable à un crochet appelé événements. Quelqu'un at-il une liste complète ou un script qui peut être utilisé pour déterminer quels événements peuvent être consultés?

Était-ce utile?

La solution

Il n'y a pas une liste de tous les événements magento, parce que la plupart des événements sont nommés de façon dynamique.

Si vous me demandez, sachant que ces événements clés (et les conséquences) est un bon point de départ (à côté de la liste de pseudo):

Chaque objet étendu de Mage_Core_Model_Abstract envoie un événement de beaucoup autour de chargement, l'enregistrement 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 contrôles, après que l'objet a été chargé

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

pour ajouter des données supplémentaires à l'objet avant qu'il soit sauvegardé

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 a été sauvé « parent »

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

nettoyage, 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

nettoyage, avant que le modèle est supprimé - ou peut-être par la suite? 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é

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 de Mage_Core_Model_Resource_Db_Collection_Abstract ont un deux événements génériques aussi:

Par exemple: pour modifier le SQL pour 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

Autres conseils

Faites la grep 'Mage::dispatchEvent' app/ -rsn sanglante 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.

Je l'utiliser comme une belle feuille de triche http: //www.nicksays. co.uk/magento-events-cheat-sheet-1-7/. Il a tous les événements qui peuvent être appelés en 1.7.

Je sais que cette question a été répondu que je viens d'ajouter mon chemin ici:

  • Je prépare la page que je veux observer dans mon navigateur
  • I application open / Mage.php
  • pour public static function dispatchEvent (ln: ~ 446) dans le début ajouter //Mage::log($name, null, 'events.log', true);
  • décommenter cette ligne,
  • rafraîchir la page que je suis sur
  • nouveau commentaire de cette ligne

Ensuite, vous ouvrez var / log / events.log (~ 40 Ko) et de voir tout un événement de lot sur cette page seulement! :)

Réponse a déjà été acceptée, mais Ill poster ma réponse de toute façon pour l'avenir:

Si vous voulez voir la liste des événements qui Magento vous a avez 3 options:

1) Google pour cela, il y a beaucoup de gens qui ont compilé une liste des événements Magento

2) Créer un module crochets sur l'événement controller_action_predispatch qui est l'événement qui est appelé avant tout autre événement est appelé. Dans ce module, vous pouvez vous connecter quelques événements qui sont distribués:

Ajoutez les données suivantes 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 du yourmodule / Modèle / observateur:

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

Ce qui précède se connecter chaque événement distribué ...

3) Si vous avez accès SSH, vous pouvez exécuter la commande suivante pour obtenir un aperçu de tous les événements (et leurs fichiers où ils sont envoyés):

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

J'utilise Developer Toolbar Magento qui a une belle fonctionnalité d'affichage des événements qui peuvent être observés à la 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

I ont fait un grep sur le module de base de Mage Magento, et conformée d'une liste,

Liste Exhaustive des événements Magento

P.S. Comme en pointe, peuvent contenir des événements qui sont des fonctions dépréciées intérieur de Magento, alors ne vérifier le fichier et la ligne de référence avant la mise en œuvre.

Ouvrir des suggestions!

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

grep "eventPrefix" -R * | sort -u

La commande précédente grep classé rendrait les doublons (beaucoup) et il ne couvre pas la liste des préfixes d'événements qui seraient nécessaires pour comprendre les noms d'événements générés dynamiquement. Ces commandes rendent les deux listes avec seulement des valeurs uniques. Vous pouvez ajouter le drapeau -n comme l'autre réponse grep et obtenir le numéro de ligne je suppose. Mais la question n'a pas demandé où dans le code qu'ils étaient tous. ~ _ ~

http://www.magentocommerce.com/wiki/5_-_modules_and_development/ référence / magento_events

Vous trouverez ici la liste complète des événements d'observateurs.

Vous pouvez trouver toutes les listes de back-end + frontend événements sur le lien unique

http://www.magentocommerce.com/wiki/5_-_modules_and_development/ référence / magento_events

Si quelqu'un a besoin de plus d'une liste mise à jour, je suis en train de garder celui-ci à jour:

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

Vous pouvez trouver tous les événements magento-1x en suivant URL. https://magento2.atlassian.net/ wiki / affichage / m1wiki / Magento + 1.x + Events + Référence

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top