Где я могу найти полный список событий Magento?
Я знаю, что в Magento есть система, похожая на крючок, называемая событиями. У кого-нибудь есть полный список или сценарий, который можно использовать для определения того, какие события можно вызывать?
15 answers
Список всех событий magento отсутствует, поскольку большинство событий имеют динамические имена.
Если вы спросите меня, знание этих ключевых событий (и последствий) является хорошей отправной точкой (помимо списка от ника):
Каждый объект, расширенный из Mage_Core_Model_Abstract, отправляет множество событий, связанных с загрузкой, сохранением и удалением:
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
Например, для добавления проверок после загрузки объекта
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
Для добавления дополнительных данных в объект прежде чем он будет сохранен
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
Для сохранения других моделей после сохранения "родительской"
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
Очистите, прежде чем модель будет удалена
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
Очистите, прежде чем модель будет удалена - или, может быть, после этого? Вы все еще находитесь здесь в процессе транзакции!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
Если вы хотите быть уверены, что объект был удален
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
Коллекции, расширенные из Mage_Core_Model_Resource_Db_Collection_Abstract, также имеют два общих события:
Например: чтобы изменить SQL для загрузки коллекции:
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
Например: для добавления дополнительных данных к объектам:
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
Выполните кровавое grep 'Mage::dispatchEvent' app/ -rsn
Это предоставит вам список событий, специфичных для вашей установки, поскольку список событий может варьироваться в зависимости от версии Magento, настроек и установленных расширений.
Я использую это как хорошую шпаргалку http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7 /. В нем есть все события, которые могут быть вызваны в 1.7.
Я знаю, что на этот вопрос был дан ответ, я просто добавляю свой путь сюда:
- Я готовлю страницу, которую хочу просмотреть в своем браузере
- Я открываю app/Mage.php
- для
public static function dispatchEvent
(ln:~446) в начале я добавляю//Mage::log($name, null, 'events.log', true);
- раскомментируйте эту строку,
- обновить страницу, на которой я нахожусь
- прокомментируйте еще раз эту строку
Затем вы открываете var/log/events.log (~40 кб) и видите множество событий только на этой странице!:)
Ответ уже принят, но я все равно опубликую свой ответ на будущее:
Если вы хотите просмотреть список событий, которые есть в Magento, у вас есть 3 варианта:
1) В Google для этого есть много людей, которые составили список событий Magento
2) Создайте модуль, который подключается к событию controller_action_predispatch
, которое является событием, вызываемым до вызова любого другого события. Внутри этого модуля вы можете регистрировать некоторые события, которые отправлено:
Добавьте следующее в 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>
И внутри вашего модуля/модели/наблюдателя:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
Вышеизложенное будет регистрировать каждое отправленное событие...
3) Если у вас есть доступ по SSH, вы можете выполнить следующую команду, чтобы получить обзор всех событий (и их файлов, в которые они отправляются):
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
Я использую панель инструментов разработчика Magento, которая имеет приятную функцию отображения событий, которые можно наблюдать на загруженной странице.
Я выполнил grep для основного модуля Mage Magento и выполнил список,
Исчерпывающий список событий Magento
P.S. Как указывалось, может содержать события, которые находятся внутри устаревших функций Magento, поэтому перед реализацией проверьте ссылку на файл и строку.
Открыт для предложений!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
Предыдущая перечисленная команда grep будет отображать дубликаты (много), и она не охватывает список префиксов событий, которые потребуются для понимания динамически генерируемых имен событий. Эти команды отображают оба списка только с уникальными значениями. Вы могли бы добавить флаг -n, как и в другом ответе grep, и получить номер строки, я полагаю. Но вопрос не касался того, где в коде они все были. ~_~
Здесь также есть шпаргалка http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
Http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Здесь вы можете найти полный список событий наблюдателя.
Здесь вы можете просмотреть большинство существующих событий: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Обратитесь к этим шпаргалкам
Https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8 / http://rabee.me/codes/magento/cheatsheet/1.9/
Это будет полезно для вас.
Вы можете найти весь список событий backend + frontend по одной ссылке
Http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Если кому-то когда-нибудь понадобится обновленный список, я стараюсь поддерживать его в актуальном состоянии:
Https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
Вы можете найти все события magento-1x по следующему URL-адресу. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference