Вопрос

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

Это было полезно?

Решение

Не существует списка всех событий 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.

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

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

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

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

Если вы хотите увидеть список событий, которые у вас есть в Magento.

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>

И внутри yourmodule/Model/Observer:

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

Выше приведено регистрировать каждое событие, которое отправляется ...

3) Если у вас есть доступ SSH, вы можете запустить следующую команду, чтобы получить обзор всех событий (и их файлов, где они отправляются):

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

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

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

Я сделал Grep на модуле Mage Mage Mage и соблюдал список,

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

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

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

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

grep "eventPrefix" -R * | sort -u

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top