Magento:控制器覆盖不工作
试图覆盖Cms/controllers/IndexController 这是我的模块的目录结构-Magento:控制器覆盖不工作,magento,controller,overriding,Magento,Controller,Overriding,试图覆盖Cms/controllers/IndexController 这是我的模块的目录结构- 本地/MyCompany/FourOhFourExp/controllers/IndexController.php Local/MyCompany/FourOhFourExp/etc/config.xml 我的IndexController的代码是 <?php require_once 'Mage'. DS .'Cms'. DS .'controllers'. DS .'IndexCo
- 本地/MyCompany/FourOhFourExp/controllers/IndexController.php
- Local/MyCompany/FourOhFourExp/etc/config.xml
<?php
require_once 'Mage'. DS .'Cms'. DS .'controllers'. DS .'IndexController.php';
class MyCompany_FourOhFourExp_IndexController extends Mage_Cms_IndexController
{
public function noRouteAction($coreRoute = null){
Mage::log('First Function');
header("Location: new_route.html");
die();
}
public function defaultNoRouteAction()
{
Mage::log('Second function!');
header("Location: new_route.html");
die();
}
}
?>
这是我的config.xml文件的代码
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyCompany_FourOhFourExp>
<version>0.1.0</version>
</MyCompany_FourOhFourExp>
</modules>
<frontend>
<routers>
<cms>
<args>
<modules>
<MyCompany_FourOhFourExp before="Mage_Cms">MyCompany_FourOhFourExp</MyCompany_FourOhFourExp>
</modules>
</args>
</cms>
</routers>
<events>
<controller_action_noroute>
<observers>
<cms>
<class>cms/observer</class>
<method>noRoute</method>
</cms>
</observers>
</controller_action_noroute>
</frontend>
</config>
0.1.0
我公司
cms/观察员
诺鲁特
希望有人能解释为什么这不是最重要的。我已经看过很多教程和博客文章,但还没有弄清楚为什么它不起作用 有很多问题: 1) 模块路径: 由于您的控制器类是MyCompany\u FouroFourExp\u IndexController,那么类的路径应该是
app/code/local/MyCompany/FourOhFourExp
require_on Mage::getModuleDir('controllers', 'Mage_Cms'). DS .'IndexController.php';
需要做什么:
- 添加到app/code/local/Mage/Cms/controllers/IndexController.php,
Mage::dispatchEvent('Cms\u controller\u action\u noroute',array('action'=>this')代码>
- 在自定义模块中,捕获事件
Mage\u Cms\u IndexController
,您可以扩展Mage\u Core\u Controller\u Front\u Action
。这将保存一次调用require\u
,这在站点启用编译时是不正确的。我正在尝试覆盖原始的,因此它甚至不应该编译其他控制器,并且我没有覆盖所有的函数,只有1-2个,所以我使用require来拉入该文档。这是我第一次尝试这种覆盖,在一些看似直截了当的事情上苦苦挣扎是令人沮丧的,但是,我想在开发过程中没有什么是这样的。我对此表示歉意,但您建议的模块路径就是我正在使用的路径。我在我的问题文件夹中进行了调整,文件夹的首字母小写,并且被错误地调用。将代码复制到单独的文件并按预期工作