Magento路由器如何初始化gespecific Action Controller和Action方法

时间:2012-12-02 06:03:06

标签: magento

我能够理解如何使用collectRoutes()函数收集路由器。那么magento如何尝试使用dispatch()方法中的match()函数匹配路由器以获取所请求的URL。 但是磁路由器如何初始化特定的Action Controller和Action方法? controller_front_send_response_before和controller_front_send_response_after事件的效用是什么?

1 个答案:

答案 0 :(得分:1)

哦,这很容易(如果我理解你的问题)。

网址始终具有route/controller/action结构。

因此,一旦Magento解决了route(你说你得到了它的工作方式),它只使用controller标记作为控制器类名的第一部分。因此,例如,如果您的控制器令牌为mymodule且您的扩展名前缀为Mygroup_Myextension,则会尝试实例化Mygroup_Myextension_MymoduleController。这意味着您的文件必须位于app/code/[community-or-local]/Mygroup/Myextension/controllers/MymoduleController.php

然后Magento将使用action令牌来调用您班级内的方法。因此,如果action令牌设置为myaction,Magento将尝试调用myactionAction()方法。

事实上,controlleraction令牌都可以省略。在这种情况下,Magento将尝试实例化Mygroup_Myextension_IndexController并调用您的扩展程序的indexAction()方法。