Frage

Ich weiß, dass Magento ein hakenähnliches System namens Events hat. Hat jemand eine vollständige Liste oder ein Skript, mit dem ermittelt werden kann, welche Ereignisse aufgerufen werden können?

War es hilfreich?

Lösung

Es gibt keine Liste aller Magento -Ereignisse, da die meisten Ereignisse dynamisch benannt werden.

Wenn Sie mich fragen, ist es ein guter Ausgangspunkt (neben der Liste von Nick) zu wissen, dass diese Schlüsselereignisse (und die Konsequenzen) wissen:

Jedes von MAGE_CORE_MODEL_ABSTRACT erweiterte Objekt entsendet viele Ereignisse zum Laden, Speichern und Löschen:

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

Zum Beispiel zum Hinzufügen von Schecks, nachdem das Objekt geladen wurde

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

Fügen Sie dem Objekt zusätzliche Daten hinzu, bevor es gespeichert wird

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

Um andere Modelle zu retten, nachdem der "Elternteil" gerettet wurde

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

Reinigen, bevor das Modell gelöscht wird

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

Reinigen, bevor das Modell gelöscht wird - oder vielleicht danach? Sie sind noch hier in der Transaktion!

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

Wenn Sie sicher sein möchten, dass die Entität gelöscht wurde

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

Die von mage_core_model_resource_db_collection_abstract erweiterten Kollektionen haben auch zwei generische Ereignisse:

Zum Beispiel: Um die SQL zu ändern, um die Sammlung zu laden:

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

Zum Beispiel: Hinzufügen zusätzlicher Daten zu den Objekten:

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

Andere Tipps

Mach das blutige grep 'Mage::dispatchEvent' app/ -rsn Auf diese Weise erhalten Sie eine Liste von Ereignissen, die für Ihre Installation spezifisch sind, da die Liste der Ereignisse je nach Magento -Version, Anpassungen und installierten Erweiterungen variieren kann.

Ich benutze das als schönes Cheat -Blatt http://www.nicksays.co.uk/magento-events-ceat-sheet-1-7/. Es hat alle Ereignisse, die in 1.7 genannt werden können.

Ich weiß, dass diese Frage beantwortet wurde. Ich füge nur meinen Weg hierher hinzu:

  • Ich bereite Seite vor, die ich in meinem Browser beobachten möchte
  • Ich öffne App/mage.php
  • zum public static function dispatchEvent (ln: ~ 446) Am Anfang füge ich hinzu//Mage::log($name, null, 'events.log', true);
  • Unterbringung dieser Linie,
  • Seite aktualisieren, auf der ich bin
  • Kommentieren Sie noch einmal diese Zeile

Dann öffnen Sie var/log/events.log (~ 40 kb) und sehen nur eine ganze Menge Ereignisse auf dieser Seite! :)

Die Antwort wurde bereits angenommen, aber ich werde meine Antwort sowieso für die Zukunft veröffentlichen:

Wenn Sie die Liste der Ereignisse sehen möchten, die Magento hat, haben Sie 3 Optionen:

1) Google dafür, es gibt viele Leute, die eine Liste von Magento -Events zusammengestellt haben

2) Erstellen Sie ein Modul, das sich an der anhängt controller_action_predispatch Ereignis, das das Ereignis ist, das vor einem anderen Ereignis aufgerufen wird. In diesem Modul können Sie einige Ereignisse protokollieren, die versandt werden:

Fügen Sie Folgendes auf config.xml hinzu

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

Und im Inneren des yourmodule/Modells/Beobachters:

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

Das obige würde jedes Ereignis protokollieren, das versandt wird ...

3) Wenn Sie SSH -Zugriff haben, können Sie den folgenden Befehl ausführen, um einen Überblick über alle Ereignisse (und deren Dateien zu erhalten, in denen sie versandt werden):

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

Ich verwende die Magento Developer -Symbolleiste, die eine gute Funktion beim Anzeigen von Ereignissen bietet, die auf der geladenen Seite beobachtet werden können.

Hier können Sie das Beste vorhandenen Ereignisse anzeigen:http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events

Ich habe ein Grep auf dem Kernmagiermodul von Magento gemacht und eine Liste eingehalten.

Erschöpfende Liste der Magento -Ereignisse

PS Wie hervorgehoben, können Ereignisse enthalten, die sich in veralteten Funktionen von Magento befinden. Überprüfen Sie also die Datei- und Zeilenreferenz vor der Implementierung.

Offen für Vorschläge!

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

grep "eventPrefix" -R * | sort -u

Der zuvor aufgelistete GREP -Befehl würde Duplikate (viel) doppelten und er behandeln die Liste der Ereignispräfixe nicht, die erforderlich müssten, um die dynamisch generierten Ereignisnamen zu verstehen. Diese Befehle rendern beide Listen nur mit eindeutigen Werten. Sie könnten das Flag -N hinzufügen, wie die andere Grep -Antwort und die Zeilennummer, nehme ich an. Aber die Frage stellte nicht, wo in dem Code sie alle waren. ~ _ ~

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

Hier finden Sie eine vollständige Liste der Beobachterereignisse.

Sie finden alle Liste der Backend + Frontend -Ereignisse auf einem Link

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

Wenn jemand jemals eine aktualisierte Liste benötigt, versuche ich, diese auf dem neuesten Stand zu halten:

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

Sie können alle Magento-1x-Ereignisse finden, indem Sie URL folgen. https://magento2.atlassian.net/wiki/display/m1wiki/magento+1.x+events+ Reference

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top