Domanda

So che Magento ha un gancio-come eventi di sistema chiamato. Qualcuno ha un elenco completo o di uno script che può essere utilizzato per determinare quali eventi possono essere chiamati?

È stato utile?

Soluzione

non è un elenco di tutti gli eventi di Magento, perché la maggior parte degli eventi sono chiamati in modo dinamico.

Se mi chiedete, conoscendo questi eventi chiave (e le conseguenze) è un buon punto di partenza (accanto all'elenco da nick):

Ogni oggetto esteso da Mage_Core_Model_Abstract invia un sacco di eventi in giro per il caricamento, salvataggio ed eliminazione:

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

Per esempio, per aggiungere i controlli, dopo che l'oggetto è stato caricato

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

per aggiungere i dati aggiuntivi per l'oggetto prima che venga salvato

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

Per salvare altri modelli dopo il "padre" è stato salvato

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

su pulito, prima che il modello viene eliminato

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

su pulito, prima che il modello viene eliminato - o forse dopo? Sei qui ancora nella transazione!

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

Se si vuole essere sicuri che il soggetto è stato cancellato

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

Le collezioni estese da Mage_Core_Model_Resource_Db_Collection_Abstract hanno un due eventi generici troppo:

Ad esempio: per modificare il codice SQL per caricare la collezione:

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

Ad esempio: per aggiungere dati aggiuntivi agli oggetti:

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

Altri suggerimenti

Fare la grep 'Mage::dispatchEvent' app/ -rsn sanguinosa Questo vi fornirà un elenco di eventi specifici per la vostra installazione come l'elenco degli eventi può variare a seconda della versione di Magento, le personalizzazioni e le estensioni installate.

Io uso questo come un bel foglietto http: //www.nicksays. co.uk/magento-events-cheat-sheet-1-7/. Ha tutti gli eventi che che possono essere chiamati a 1.7.

So che questa domanda è stato risposto che solo aggiungere la mia strada qui:

  • preparo pagina che voglio osservare nel browser
  • I aperta app / Mage.php
  • per public static function dispatchEvent (ln: ~ 446) In principio aggiungo //Mage::log($name, null, 'events.log', true);
  • decommentare quella linea,
  • pagina di aggiornamento che sono in
  • Commento ancora una volta che la linea

Poi si apre var / log / events.log (~ 40kb) e vedere un intero lotto eventi a solo quella pagina! :)

risposta è già stata accettata ma Ill inviare la mia risposta in ogni caso per il futuro:

Se si desidera visualizzare l'elenco degli eventi che Magento ha avete 3 opzioni:

1) Google per essa, ci sono un sacco di persone che hanno compilato una lista di eventi Magento

2) Creare un modulo che ganci sull'evento controller_action_predispatch che è l'evento che si chiama prima di qualsiasi altro evento viene chiamato. All'interno di questo modulo è possibile registrare alcuni eventi che vengono inviati:

Aggiungere la seguente sulla 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>

E dentro la nomemodulo / Modello / Observer:

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

È possibile che questo sarebbe registrare ogni evento che viene inviato ...

3) Se si dispone di accesso SSH è possibile eseguire il seguente comando per avere una panoramica di tutti gli eventi (e le loro file dove vengono spediti):

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

Sto usando Magento Developer Toolbar che ha bella caratteristica di eventi che mostrano che possono essere osservati sulla pagina caricata.

Qui è possibile visualizzare la maggior parte di eventi già esistenti: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events

Ho fatto un grep sul core modulo Mage di Magento, e rispettato un elenco,

esaustiva lista di Magento Eventi

P.S. Come fuori punta, può contenere gli eventi che sono all'interno di funzioni deprecate di Magento, in modo da controllare il file di riferimento e la linea prima della loro attuazione.

Apri per i suggerimenti!

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

grep "eventPrefix" -R * | sort -u

Il comando grep precedente quotata renderebbe duplicati (tanto) e non comprende l'elenco dei prefissi di eventi che sarebbero necessarie per comprendere i nomi di eventi generati in modo dinamico. Questi comandi rendono entrambe le liste con i valori solo univoci. Si potrebbe aggiungere il flag -n come l'altra risposta grep e ottenere il numero di riga suppongo. Ma la questione non ha chiesto dove nel codice erano tutti. ~ _ ~

Potete trovare tutta la lista dei backend + frontend eventi sul singolo collegamento

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

Se qualcuno mai ha bisogno di un elenco aggiornato, sto cercando di mantenere questo fino ad oggi:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top