2013-05-10 68 views
1

所以我想重寫核心CustomerController massDelete操作。這是我到目前爲止有:Magento:試圖重寫控制器

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'); 
    } 
} 

然而,當我運行一個批量刪除,我把他們的控制器,而不是運行模具。有任何想法嗎?

UPDATE:

嘗試瞭解決方案如下:

<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」,那麼當嘗試轉到大多數索引頁面時,我會遇到一些覆蓋問題。但是,如果我的優先級較低,則不會覆蓋。所以我再次卡住了。

+0

是你的模塊聲明? ('app/etc/modules/MyModule_MyExtension.xml')刷新緩存? – OSdave 2013-05-10 14:38:20

+0

是的模塊聲明和工作一堆其他的東西。緩存關閉,但我手動刷新它以防萬一。仍然沒有 – 2013-05-10 14:42:02

+0

在日誌中的任何東西? – OSdave 2013-05-10 17:15:07

回答

0

我猜你的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/

+0

我做了改變,仍然沒有。查看當前配置的更新 – 2013-05-10 14:16:08

+0

@BillGarrison剛剛嘗試過,所引用的代碼對我來說是完美的。確保你不只是忘記激活你的模塊? – 2013-05-10 14:34:15

+0

是的,我有其他事情的模塊。這只是這個過程的又一步。從所有其他例子我看到這應該工作...我知道我必須錯過一些小...我只是不能看到它 – 2013-05-10 14:37:05

0

所以經過大量的調查研究,我終於想通了這個問題。我的問題是​​3210中的before="Mage_Adminhtml"。由於企業的工作方式,重寫頂級類是不夠的。

我用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> 

現在的作品完美(編輯:都能跟得上它不...見下文評論)

+0

所以實際上我對此有點問題。如果我以前有=「Mage_XmlConnect_Adminhtml」,那麼在嘗試轉到大多數索引頁時,我會遇到一些覆蓋問題。但是,如果我的優先級較低,則不會覆蓋。所以我再次卡住了。 – 2013-05-20 19:37:48