2013-10-24 94 views
2

我想重寫以下控制器,它在後臺創建訂單:Magento的 - 覆蓋順序控制器

app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php 

我抄文件本身到:

app/code/community/Pinto/PartnerSystem/Adminhtml/controllers/Sales/Order/CreateController.php 

對於不是着想確定在哪裏或如何完全複製文件/目錄結構我也將其複製到:

app/code/community/Pinto/PartnerSystem/controllers/AdminControllers/Sales/Order/CreateController.php 

然後我改名類:

class PartnerSystem_Adminhtml_Sales_Order_CreateController extends Mage_Adminhtml_Sales_Order_CreateController 
{ 
// functions 
} 

在我config.xml中我已經添加了以下內容:

<admin> 
     <routers> 
      <partnersystem> 
       <use>admin</use> 
       <args> 
        <module>Pinto_PartnerSystem_AdminControllers</module> 
        <frontName>partnersystemadmin</frontName> 
       </args> 
      </partnersystem> 
      <adminhtml> 
       <args> 
        <modules> 
         <partnersystem before="Mage_Adminhtml">PartnerSystem_Adminhtml_Sales_Order_CreateController</partnersystem> 
        </modules> 
       </args> 
      </adminhtml> 
     </routers> 
    </admin> 

我不太清楚,什麼我應該放之間做出它使用我的CreateController.php而不是基本的。

很新的Magento所以可以使用一些幫助:)

回答

3

新控制器的正確的路徑是: app/code/community/Pinto/PartnerSystem/controllers/Adminhtml/Sales/Order/CreateController.php(切換文件夾controllersAdminhtml)。 這條線從配置:

<partnersystem before="Mage_Adminhtml">PartnerSystem_Adminhtml_Sales_Order_CreateController</partnersystem> 

應該

<partnersystem before="Mage_Adminhtml">Pinto_PartnerSystem_Adminhtml</partnersystem> 

,並在新的控制器文件,之前類定義添加此

require_once 'Mage/Adminhtml/controllers/Sales/Order/CreateController.php' 

[編輯]
的新的控制器類名稱應爲Pinto_PartnerSystem_Adminhtml_Sales_Order_CreateController

+0

嗨馬呂斯,感謝您的快速回復!它似乎現在可以識別新的控制器文件 - 但是,如上所述,我在類定義之前包含了原始類,並且出現以下錯誤:'控制器文件已加載,但類不存在'。 – Daniel

+0

@DanielPaul。哦,是的...我忘了其他的事情。新的控制器類名應該是'Pinto_PartnerSystem_Adminhtml_Sales_Order_CreateController'。我會將它添加到答案 – Marius

+0

啊,忘了命名空間!謝謝你現在在工作。 – Daniel

2

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

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

require_once 'Mage/Adminhtml/controllers/Sales/Order/CreateController.php'; 

相反的,它是用

require_once Mage::getModuleDir('controllers', 'Mage_Adminhtml').DS.'Sales_Order_CreateController.php'; 

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

+1

我已經使用這個修改過的代碼:require_once Mage :: getModuleDir('controllers','Mage_Adminhtml')。DS.'Sales'.DS.'Order'.DS.'CreateController.php'; –