Magento最早发送的活动是什么?

时间:2011-06-20 11:24:47

标签: magento

当客户访问前端控制器时,我需要尽早在调度过程中启动事件。该请求将被分析,并可能被重定向到不同的URL,证明“尽早”的要求。

开发人员可以订阅的最早活动是什么?

4 个答案:

答案 0 :(得分:19)

我最依赖的事件是

controller_front_init_before 

Magento前端控制器对象(与“index.php前端控制器”不同)是管理路由器的对象,后者又管理动作控制器分派。

之前还有其他一些(resource_get_tablenamecore_collection_abstract_load_beforecore_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;
}

模式开始出现。

答案 1 :(得分:3)

您可能正在寻找controller_action_predispatch事件。

之前有很多其他事件被触发,但在这种情况下,我假设你仍然想要访问调度的动作控制器。

如果您想要更早,那么您最好的选择是controller_front_init_before,这是在前控制器初始化之前触发的。

答案 2 :(得分:2)

以下是Magento 1.4.1.11.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函数中添加类似的行。

答案 3 :(得分:2)

经过一些惨淡的打击后,似乎已经启用了 Magento EE全页缓存 - 您可以监听的唯一可靠事件是http_response_send_before