【发布时间】:2014-09-16 15:43:44
【问题描述】:
试图覆盖 Cms/controllers/IndexController。
这是我的模块的目录结构 -
- 本地/MyCompany/FourOhFourExp/controllers/IndexController.php
- 本地/MyCompany/FourOhFourExp/etc/config.xml
我的 IndexController 的代码是
<?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>
希望有人能解释为什么这不是压倒一切的。我浏览了许多教程和博客文章,但还没有弄清楚为什么它不起作用。
【问题讨论】:
-
我认为不需要扩展
Mage_Cms_IndexController,你可以扩展Mage_Core_Controller_Front_Action。这样可以节省调用require_once的时间,这在站点启用编译时是不正确的。 -
我正在尝试覆盖原来的,所以它甚至不应该编译另一个控制器,而且我没有覆盖所有的功能,只是 1-2 所以我正在使用 require 来拉记录。这是我第一次尝试这种覆盖,在看似直截了当的事情上如此努力地挣扎是令人沮丧的,但话又说回来,我想在开发中什么都不是。
标签: magento controller overriding