Php Magento-覆盖命令控制器

Php Magento-覆盖命令控制器,php,magento,controllers,Php,Magento,Controllers,我想覆盖以下在后端创建订单的控制器: app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php 我已将文件本身复制到: app/code/community/Pinto/PartnerSystem/Adminhtml/controllers/Sales/Order/CreateController.php 为了不确定复制文件/目录结构的确切位置或方式,我还将其复制到: app/code/communit

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

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>

管理
Pinto_PartnerSystem_AdminController
partnersystemadmin
PartnerSystem\u Adminhtml\u Sales\u Order\u CreateController
我不太确定应该在两者之间放置什么,以使它使用我的
CreateController.php
而不是基本的


Magento非常新,因此需要一些帮助:)

新控制器的正确路径是:
app/code/community/Pinto/PartnerSystem/controllers/Adminhtml/Sales/Order/CreateController.php
(切换文件夹
controllers
Adminhtml
)。 此行来自配置:

<partnersystem before="Mage_Adminhtml">PartnerSystem_Adminhtml_Sales_Order_CreateController</partnersystem>
[编辑]

新的控制器类名应该是
Pinto\u PartnerSystem\u Adminhtml\u Sales\u Order\u CreateController

这是控制器包含路径上的一个小通知

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

require_once 'Mage/Adminhtml/controllers/Sales/Order/CreateController.php';
相反,使用它是很好的

require_once Mage::getModuleDir('controllers', 'Mage_Adminhtml').DS.'Sales_Order_CreateController.php';
这样会更安全。
希望这有帮助。

嗨,马吕斯,谢谢你的快速回复!它现在似乎可以识别新的控制器文件-但是,正如您所说,我在类定义之前包含了原始类,并且我得到了以下错误:“控制器文件已加载,但类不存在”。@DanielPaul。哦,是的……我忘了另一件事。新控制器类名应为
Pinto\u PartnerSystem\u Adminhtml\u Sales\u Order\u CreateController
。我将把它添加到答案中啊,忘记了名称空间!谢谢,它现在可以工作了。我使用了这个修改过的代码:require_once Mage::getModuleDir('controllers','Mage_Adminhtml').DS.Sales'.DS.Order'.DS.CreateController.php';
require_once 'Mage/Adminhtml/controllers/Sales/Order/CreateController.php';
require_once Mage::getModuleDir('controllers', 'Mage_Adminhtml').DS.'Sales_Order_CreateController.php';