Где я могу найти полный список событий Magento?


Я знаю, что в Magento есть система, похожая на крючок, называемая событиями. У кого-нибудь есть полный список или сценарий, который можно использовать для определения того, какие события можно вызывать?

Author: Siarhey Uchukhlebau, 2013-01-24

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
 104
Author: Fabian Blechschmidt, 2013-01-24 19:09:05

Выполните кровавое grep 'Mage::dispatchEvent' app/ -rsn Это предоставит вам список событий, специфичных для вашей установки, поскольку список событий может варьироваться в зависимости от версии Magento, настроек и установленных расширений.

 49
Author: user487772, 2013-01-24 22:00:52

Я использую это как хорошую шпаргалку http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7 /. В нем есть все события, которые могут быть вызваны в 1.7.

 26
Author: Derrik Nyomo, 2013-01-24 16:43:13

Я знаю, что на этот вопрос был дан ответ, я просто добавляю свой путь сюда:

  • Я готовлю страницу, которую хочу просмотреть в своем браузере
  • Я открываю app/Mage.php
  • для public static function dispatchEvent (ln:~446) в начале я добавляю //Mage::log($name, null, 'events.log', true);
  • раскомментируйте эту строку,
  • обновить страницу, на которой я нахожусь
  • прокомментируйте еще раз эту строку

Затем вы открываете var/log/events.log (~40 кб) и видите множество событий только на этой странице!:)

 9
Author: Kresimir Pendic, 2018-03-12 12:55:51

Ответ уже принят, но я все равно опубликую свой ответ на будущее:

Если вы хотите просмотреть список событий, которые есть в 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/
 6
Author: Kenny, 2013-01-30 06:05:21

Я использую панель инструментов разработчика Magento, которая имеет приятную функцию отображения событий, которые можно наблюдать на загруженной странице.

 4
Author: Damir Mitrovic, 2013-01-29 15:21:44

Я выполнил grep для основного модуля Mage Magento и выполнил список,

Исчерпывающий список событий Magento

P.S. Как указывалось, может содержать события, которые находятся внутри устаревших функций Magento, поэтому перед реализацией проверьте ссылку на файл и строку.

Открыт для предложений!

 4
Author: huzefam, 2014-06-27 17:29:28
grep "::dispatchEvent" -R * | sort -u

grep "eventPrefix" -R * | sort -u

Предыдущая перечисленная команда grep будет отображать дубликаты (много), и она не охватывает список префиксов событий, которые потребуются для понимания динамически генерируемых имен событий. Эти команды отображают оба списка только с уникальными значениями. Вы могли бы добавить флаг -n, как и в другом ответе grep, и получить номер строки, я полагаю. Но вопрос не касался того, где в коде они все были. ~_~

 4
Author: mprototype, 2015-10-13 07:26:10

Здесь также есть шпаргалка http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/

 3
Author: Rachel Gallen, 2013-02-02 15:31:12

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

Здесь вы можете найти полный список событий наблюдателя.

 3
Author: Bijal Bhavsar, 2013-07-11 09:46:10

Здесь вы можете просмотреть большинство существующих событий: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events

 3
Author: Vladislav Mosalskey, 2013-11-06 18:57:55

Обратитесь к этим шпаргалкам

Https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8 / http://rabee.me/codes/magento/cheatsheet/1.9/

Это будет полезно для вас.

 3
Author: Sree, 2015-06-18 12:43:25

Вы можете найти весь список событий backend + frontend по одной ссылке

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

 2
Author: Abhishek Gupta, 2014-12-20 10:34:18

Если кому-то когда-нибудь понадобится обновленный список, я стараюсь поддерживать его в актуальном состоянии:

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

 2
Author: Raphael at Digital Pianism, 2016-11-16 09:00:28

Вы можете найти все события magento-1x по следующему URL-адресу. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference

 1
Author: Teja Bhagavan Kollepara, 2016-06-22 07:00:48