我现在有点儿尴尬,现在有点扯掉我的脑袋。我试图在Magento的后端管理中重写一个控制器方法来允许一些额外的功能。这是我想要应用我的覆盖的url路径。 <Magento root path>/index.php/admin/iBanners_banner/edit/id/2/key/4c9796d89ba5e8847e4ce8c893cd6901/
Magento覆盖后台管理员中的分机控制器
以下是原始插件的admin分段路由器xml,它存在于它们的config.xml文件中。
<admin>
<routers>
<adminhtml>
<args>
<modules>
<ibanners before="Mage_Adminhtml">Fishpig_iBanners_Adminhtml</ibanners>
</modules>
</args>
</adminhtml>
</routers>
</admin>
这是我的控制器类与我需要重写适当的编辑方法。此文件位于下面的目录结构:app/code/local/Leafcutter/Ibanners/controllers/Adminhtml/Ibanners/BannerController.php
<?php
require_once("Fishpig/IBanners/controllers/Adminhtml/IBanners/BannerController.php");
class Leafcutter_iBanners_Adminhtml_iBanners_BannerController extends Fishpig_iBanners_Adminhtml_iBanners_BannerController
{
public function _construct(){
Mage::log('Using Leafcutter Extension');
parent::_construct();
}
public function editAction()
{
die('Leafcurtter has been returned');
}
}
就好像你去这个网址编辑你所期望的,我修改编辑功能应该与消息死去。
我也应用了我认为是我的扩展的config.xml文件中admin分段路由器xml代码的适当位。现在当我刷新页面或者我注销并重新登录到后端时。我的扩展的控制器不会覆盖原来的控制器,并且原来的控制器加载,就好像我的版本根本不存在一样。
下面的2个片段是我试图覆盖原始扩展的控制器的示例,它们都无法正常工作,但它是所有失败尝试实现此功能的示例。
<admin>
<routers>
<adminhtml>
<args>
<modules>
<ibanners before="Mage_Adminhtml">Leafcutter_iBanners_Adminhtml</ibanners>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<admin>
<routers>
<ibanners>
<args>
<modules>
<Leafcutter_iBanners before="Fishpig_iBanners">Leafcutter_iBanners_Adminhtml</Leafcutter_iBanners>
</modules>
</args>
</ibanners>
</routers>
</admin>
除非如果严格也不可能在所有覆盖的延伸的后端控制器和我的解决方案从一开始就存在缺陷,如果有人能帮助我尤其是看着我的配置XML我的管理路由器代码,那么这将是大。因为我不想对原始扩展应用黑客攻击,如果提供绝对没有选择的话,我可能必须这样做。提前致谢。
艾伦是对的.................. –
_validateControllerClassName这个函数真的很有用 – huzefam