Какое самое раннее событие отправляет Magento? - PullRequest
5 голосов
/ 20 июня 2011

Мне нужно инициировать событие как можно раньше в процессе отправки, когда клиент посещает контроллер внешнего интерфейса.Запрос должен быть проанализирован и, возможно, будет перенаправлен на другой URL, что оправдывает требование «как можно раньше».

На какое самое раннее событие, на которое может подписаться разработчик?

Ответы [ 4 ]

19 голосов
/ 20 июня 2011

Самое раннее событие, на которое я бы рассчитывал, это

controller_front_init_before 

Объект фронт-контроллера Magento (в отличие от «фронт-контроллера index.php») - это объект, который управляет маршрутизаторами, что, в свою очередь,управляет диспетчерской диспетчерской операцией action .

Есть несколько других (resource_get_tablename, core_collection_abstract_load_before, core_collection_abstract_load_after), которые срабатывали раньше, но это больше разновидность побочных эффектов (Magento использует свои собственные системы для самозагрузки), чем все, на что вы хотели бы положиться.

Наконец, как всегда следует указывать, если вы немного войдете в систему, то app/Mage.php

public static function dispatchEvent($name, array $data = array())
{
    file_put_contents('/tmp/events.log',"$name \n",FILE_APPEND);
    Varien_Profiler::start('DISPATCH EVENT:'.$name);
    $result = self::app()->dispatchEvent($name, $data);
    #$result = self::registry('events')->dispatch($name, $data);
    Varien_Profiler::stop('DISPATCH EVENT:'.$name);
    return $result;
}

паттерны начнут появляться.

3 голосов
/ 20 июня 2011

Вы, наверное, ищете controller_action_predispatch событие.

Перед ним было запущено множество других событий, но в этом случае я предполагаю, что вы все еще хотите получить доступ к отправленному контроллеру действий.

Если вы хотите его еще раньше, тогда вам лучшеставка будет controller_front_init_before, которая будет сделана до инициализации фронт-контроллера.

2 голосов
/ 27 февраля 2015

После некоторой паузы кажется, что - с точки зрения включения полного кэша страниц Magento EE - единственное надежное событие, которое вы можете прослушать, - http_response_send_before.

2 голосов
/ 20 июня 2011

Вот список событий в Magento 1.4.1.1 и 1.5.1.0

Также есть событие для каждого из controller_action_predispatch и controller_action_postdispatch.Чтобы узнать, какие действия вызываются, вы можете добавить следующую строку

Mage::log('controller_action_predispatch_'.$this->getFullActionName());

к функции preDispatch app/code/core/Mage/Core/Controller/Varien/Action.php

Аналогичную строку можно добавить к функции postDispatch втот же файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...