Eu sei que o Magento tem um sistema semelhante a um gancho chamado events. Alguém tem uma lista completa ou um script que pode ser usado para determinar quais eventos podem ser chamados?
Eu sei que o Magento tem um sistema semelhante a um gancho chamado events. Alguém tem uma lista completa ou um script que pode ser usado para determinar quais eventos podem ser chamados?
Respostas:
Não há uma lista de todos os eventos magento, porque a maioria dos eventos é nomeada dinamicamente.
Se você me perguntar, conhecer esses eventos importantes (e as consequências) é um bom ponto de partida (ao lado da lista de nick):
Todo objeto estendido de Mage_Core_Model_Abstract envia muitos eventos para carregar, salvar e excluir:
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 exemplo, para adicionar verificações, depois que o objeto foi carregado
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
para adicionar dados adicionais ao objeto antes que ele seja salvo
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
Para salvar outros modelos depois que o "pai" foi salvo
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
antes de excluir o modelo
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
limpar, antes que o modelo seja excluído - ou talvez depois? Você ainda está aqui na transação!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
Se você quiser ter certeza de que a entidade foi excluída
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
As coleções estendidas de Mage_Core_Model_Resource_Db_Collection_Abstract também possuem dois eventos genéricos:
Por exemplo: para alterar o SQL para carregar a coleção:
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 exemplo: para adicionar dados adicionais aos 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
_eventPrefix
para os eventos modelo, os eventos direcionados pedido, os eventos de blocos genéricos ocasionalmente-úteis, e a importância do registro para encontrar eventos
app/code/core/Mage/Core/Model/App.php
e mage::log($eventName,null,'events.txt',true);
para o dispatchEvent
método. Carregue a página que estou tentando observar. Obviamente, não deixe isso como está e reverta depois que seu var / logs / events.txt for criado. Sujo, sim. Rápido, sim. :)
Faça o sangrento grep 'Mage::dispatchEvent' app/ -rsn
Isso fornecerá uma lista de eventos específicos para sua instalação, pois a lista de eventos pode variar dependendo da versão do Magento, personalizações e extensões instaladas.
sales_order_place_after
isso acontecerá, mas parece que a chamada para acioná-lo foi comentada Checkout/Type/Onepage.php
.
Eu uso isso como uma boa folha de dicas http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ . Tem todos os eventos que podem ser chamados no 1.7.
Sei que esta pergunta foi respondida, apenas adiciono o meu caminho aqui:
public static function dispatchEvent
(ln: ~ 446) no começo eu adiciono
//Mage::log($name, null, 'events.log', true);
Então você abre var / log / events.log (~ 40kb) e vê muitos eventos somente nessa página! :)
A resposta já foi aceita, mas postarei minha resposta de qualquer maneira para o futuro:
Se você quiser ver a lista de eventos que o Magento possui, você tem 3 opções:
1) Google, há muitas pessoas que compilaram uma lista de eventos Magento
2) Crie um módulo que se conecte controller_action_predispatch
ao evento que é chamado antes de qualquer outro evento. Dentro deste módulo, você pode registrar alguns eventos que são despachados:
Adicione o seguinte em 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 do seu módulo / modelo / observador:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
O acima registraria todos os eventos despachados ...
3) Se você tiver acesso SSH, poderá executar o seguinte comando para obter uma visão geral de todos os eventos (e seus arquivos para onde eles são despachados):
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
, principalmente controller_front_init_before
. 2) Essa abordagem simplesmente não registra todos os eventos despachados, isso é um erro de digitação ou seção incompleta?
Estou usando a barra de ferramentas Magento Developer que possui um recurso interessante para a exibição de eventos que podem ser observados na página carregada.
Aqui você pode ver a maioria dos eventos existentes: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Eu fiz um grep no módulo Mage principal do Magento e cumpri uma lista,
Lista exaustiva de eventos Magento
PS Como indicado, pode conter eventos que estão dentro das funções obsoletas do Magento, portanto verifique a referência de arquivo e linha antes da implementação.
Aberto para sugestões!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
O comando grep listado anteriormente renderizaria duplicatas (muito) e não cobre a lista de prefixos de eventos que seriam necessários para entender os nomes de eventos gerados dinamicamente. Esses comandos processam as duas listas apenas com valores exclusivos. Você pode adicionar o sinalizador -n como a outra resposta grep e obter o número da linha que eu suponho. Mas a pergunta não perguntou onde estavam todos no código. ~ _ ~
há uma cábula aqui também http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Aqui você pode encontrar uma lista completa dos eventos do observador.
Consulte estas folhas de dicas
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
Será útil para você.
Você pode encontrar toda a lista de eventos de back-end + front-end no link único
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Se alguém precisar de uma lista atualizada, estou tentando mantê-la atualizada:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
Você pode encontrar todos os eventos magento-1x seguindo o URL. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference