2

我想覆盖以下在后端创建订单的控制器:

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 很新,所以可以使用一些帮助:)

4

2 回答 2

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.

于 2013-10-24T13:14:59.093 回答
2

这是关于控制器包含路径的一个小通知。

如果打开Magento 编译器模式,此包含路径可能会导致错误

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

取而代之的是,它很好用

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

会更安全。希望这可以帮助..

于 2014-01-23T09:55:54.477 回答