我想覆盖以下在后端创建订单的控制器:
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
}
在我的配置中.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来说很新,所以可以使用一些帮助:)
新控制器的正确路径是: app/code/community/Pinto/PartnerSystem/controllers/Adminhtml/Sales/Order/CreateController.php
(controllers
和Adminhtml
切换文件夹)。配置中的这一行:
<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
。
这是控制器包含路径上的一个小通知。
如果打开了Magento编译器模式,则此包含路径可能会导致错误。
require_once 'Mage/Adminhtml/controllers/Sales/Order/CreateController.php';
取而代之的是,最好使用
require_once Mage::getModuleDir('controllers', 'Mage_Adminhtml').DS.'Sales_Order_CreateController.php';
它会更安全。希望这有帮助..