PowerRC's Blog

Posted by:
PowerRC

码农,吃货,偶尔飙车和摄影,应该属于危险人物。

2,970

重载Magento里adminhtml的controller

magento的model类和block类的重载都不难,直接复制一个,按照相同的目录格式放到local下就可以了。

但是重载controller和config文件就非常麻烦了。

关于重载普通的controller可以参照这篇官方wiki文章
www.magentocommerce.com/wiki/how_to_overload_a_controller

而重载adminhtml的controller就最好用我的这种方法

例如重载adminhtml里sales/order里的controller,我是这样做的。

首先要注意的是,所有文件夹和文件的名字,都是大小写敏感的,否则在linux环境下会失效。

1.先创建自己的module,例如名字叫xxx,命名空间叫yyy。新建local下的yyy/xxx文件夹,里面新建一个etc文件夹,和controllers文件夹。
目录结构是
app/local/yyy/xxx/controllers

app/local/yyy/xxx/etc

2.在app/etc/Modules里新建一个叫yyy_All.xml的文件.内容填

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<yyy_xxx>
<active>true</active>
<codePool>local</codePool>
</yyy_xxx>
</modules>
</config>

3.在app/local/yyy/xxx/etc里新建一个名字叫config.xml的文件,内容填

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<yyy_xxx>
<version>0.1.0</version>
</yyy_xxx>
</modules>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<yyy_xxx before="Mage_Adminhtml">yyy_xxx</yyy_xxx>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>

4.在app/local/yyy/xxx/controllers里,按照要重载的controller的目录结构,放置同名的controller,例如我要重载sales/order/createcontroller,我就弄成这样的目录结构并新建php文件如下
app/local/yyy/xxx/controllers/Sales/Order/CreateController.php

5.controll类文件里的内容,直接extend要重载的controller文件就可以了。例如

1
2
3
4
include("Mage/Adminhtml/controllers/Sales/Order/CreateController.php");
class yyy_xxx_Sales_Order_CreateController extends Mage_Adminhtml_Sales_Order_CreateController
{
}

最后,删除var/cache里的东西,就生效的了。

版权申明

若文中未注明,则本文由 PowerRC 原创,转载请注明出处。

分享

相关文章

发表评论

*

code

back up ↑