Magento的:试图重写控制器(Magento: Attempting to override a

2019-10-18 03:29发布

所以,我想重写核心CustomerController massDelete行动。 这是我到目前为止有:

config.xml

<frontend>
  <routers>
    <customer_massdelete>
      <args>
        <modules>
          <MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
        </modules>
      </args>
    </customer_massdelete>
  </routers>
</frontend>

我的控制器:

app/code/local/MyModule/MyExtension/controllers/CustomerController.php

<?php
require_once 'Mage/Adminhtml/controllers/CustomerController.php';
class MyModule_MyExtension_CustomerController extends Mage_Adminhtml_CustomerController {
  public function massDeleteAction() { 
   die('my controller');
  }
}

然而,当我运行一个批量删除,我把他们的控制器芯片来代替运行。 有任何想法吗?

更新:

尝试了解决方案如下:

<config>
  <admin>
    <routers>
      <adminhtml>          
        <args>
          <modules>
            <MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
          </modules>
        </args>
      </adminhtml>
    </routers>
  </admin>
</config>

依然没有...

更新2:

我最后的config.xml文件是这样的:

<config>
  <admin>
    <routers>
      <adminhtml>      
        <args>
          <modules>
            <Mymodule_Myextension before="Mage_XmlConnect_Adminhtml">Mymodule_Myextension</Mymodule_Myextension>
          </modules>
        </args>      
      </adminhtml>
    </routers>
  </admin>
</config>

但是,如果我有之前=“Mage_XmlConnect_Adminhtml”然后我得到了一些覆盖问题,试图去大多数索引页时。 但是,如果我再低优先它不会覆盖。 于是我又卡住了。

Answer 1:

我猜你的config.xml文件是假的,你可以尝试:

<admin>
   <routers>
      <adminhtml>
         <args>
           <modules>
             <MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
           </modules>
         </args>
      </adminhtml>
   </routers>
</admin>

参考: http://prattski.com/2010/06/24/magento-overriding-core-files-blocks-models-resources-controllers/



Answer 2:

因此,大量的研究后,我终于想通了这个问题。 我的问题是与before="Mage_Adminhtml"config.xml 。 由于企业工作的方式是不够的,覆盖顶层类。

我用print_r(Mage::getConfig()->getNode('admin/routers/adminhtml'), true)找出所有重写它的模块,并通过列表的工作。 Mage_XmlConnect_Adminhtml是推翻以前的企业方法这种方法的最后一堂课。

我最后的config.xml文件是这样的:

<config>
  <admin>
    <routers>
      <adminhtml>      
        <args>
          <modules>
            <Mymodule_Myextensionbefore="Mage_XmlConnect_Adminhtml">Mymodule_Myextension</Mymodule_Myextension>
          </modules>
        </args>      
      </adminhtml>
    </routers>
  </admin>
</config>

现在完美的作品(编辑:都能跟得上它不...见下面的评论)



文章来源: Magento: Attempting to override a controller