覆盖重写的Adminhtml控制器

时间:2014-11-03 23:45:05

标签: magento adminhtml

我试图覆盖已经覆盖的社区Adminhtml控制器" Mage_Adminhtml"

具有第一次覆盖的社区模块A

...
<admin>
 <routers>
  ...
   <adminhtml>
    <args>
     <modules>
      <ModuleA before="Mage_Adminhtml">NameSpaceA_ModuleA_Adminhtml</ModuleA>
     </modules>
    </args>
   </adminhtml>
 </routers>
</admin>
...

我想做一些改动,所以...... 本地模块B

...
<admin>
 <routers>
  ...
   <adminhtml>
    <args>
     <modules>
      <NameSpaceB_ModuleB before="NameSpaceA_ModuleA_Adminhtml">NameSpaceB_ModuleB_Adminhtml</NameSpaceB_ModuleB>
     </modules>
    </args>
   </adminhtml>
 </routers>
</admin>
...

本地模块B依赖于模块A(<depends>标签),缓存关闭

使用了本地模块B,我已经覆盖了一些Adminhtml块和模型

永远不会调用本地控制器,我尝试了很多但没有结果

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您的本地config.xml应该是这样的:

...
<admin>
 <routers>
  ...
   <adminhtml>
    <args>
     <modules>
      <NameSpaceB_ModuleB before="NameSpaceA_ModuleA">NameSpaceB_ModuleB_Adminhtml</NameSpaceB_ModuleB>
     </modules>
    </args>
   </adminhtml>
 </routers>
</admin>
...

然后,您应该将您的控制器类命名为扩展控制器类。这是一个例子。

扩展课程:

NameSpaceA_ModuleA_Adminhtml_CoolController

扩展类(您的控制器):

NameSpaceB_ModuleB_Adminhtml_CoolController

注意&#34; CoolController&#34;类名的一部分。

此外,在NameSpaceB_ModuleB_Adminhtml_CoolController类中,您必须要求扩展类并对其进行扩展:

require_once "NameSpaceA/ModuleA/Adminhtml/CoolController.php";

class NameSpaceB_ModuleB_Adminhtml_CoolController 
    extends NameSpaceA_ModuleA_Adminhtml_CoolController {

    /* your code*/

}