2012-11-05 181 views
2

這位朋友你好,我需要在乘坐Magento的核心控制器控制器覆蓋在Magento

我想重寫Mage\ImportExport\controllers\Adminhtml\ExportController.php

在我community\compnyname\modulename\controllers\Adminhtml

這是我config.xml in \compnyname\modulename\etc

<?xml version="1.0" encoding="utf-8"?> 
<config> 
    <modules> 
     <company_module> 
      <version>1.0</version> 
     </company_module> 
    </modules> 
    <global> 
     <rewrite> 
      <company_module> 
       <from><![CDATA[#^/controller/adminhtml/#]]></from> 
       <to>/controller/adminhtml/</to> 
      </company_module> 
     </rewrite> 
    </global> 
</config> 

這是我的控制器代碼\compnyname\modulename\controllers\Adminhtml\ExportController.php

<?php 
require_once('/Mage/ImportExport/controllers/Adminhtml/ExportController.php'); 
class company_module_ImportExport_Controller_Adminhtml_ExportController extends Mage_ImportExport_Adminhtml_ExportController 
{ 
    function indexAction() 
    { 
     echo "i am called";die; 
    } 
} 
?> 

請幫我在覆蓋控制器

凡在我的代碼是什麼問題?

回答

9

從Magento 1.3(2009)開始,這樣的重寫已被棄用。你可以閱讀更多關於它here

,你會想要做的,而不是什麼是這樣的:

<admin> 
    <routers> 
     <adminhtml> 
      <args> 
       <modules> 
        <companyname_exportproduct before="Mage_ImportExport_Adminhtml">Companyname_ExportProduct_Adminhtml</companyname_exportproduct> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

你的類名和需要看起來有點掉爲好。最好不要用php結束標籤來結束php類文件,因爲它可能會意外地包含一個可能會擾亂髮送標題順序的空白。

所以話說回來,我想你的類文件更改爲:

<?php 
require_once('Mage/ImportExport/controllers/Adminhtml/ExportController.php'); 
class Companyname_ExportProduct_Adminhtml_ExportController extends Mage_ImportExport_Adminhtml_ExportController 
{ 
    function indexAction() 
    { 
     echo "i am called";die; 
    } 
} 

以防萬一你已經忘記了我,包括你就必須在應用程序的/ etc /模塊,以使文件您的模塊處於活動狀態:

<config> 
    <modules> 
     <Companyname_ExportProduct> 
      <active>true</active> 
      <codePool>community</codePool> 
     </Companyname_ExportProduct> 
    </modules> 
</config> 
2

檢查下面的鏈接。
Link 1
Link 2

我希望這可以幫到你。

+0

我檢查,但沒有得到什麼是我的代碼中的問題 – user123

2

這是控制器包含路徑上的一個小通知。

這包括路徑可能導致錯誤如果Magento編譯器模式處於打開狀態。

require_once 'Mage/ImportExport/controllers/Adminhtml/ExportController.php'; 

相反的,它是用

require_once Mage::getModuleDir('controllers', 'Mage_ImportExport').DS.'Adminhtml_ExportController.php'; 

好將更加安全。 希望這會有所幫助..