use*_*123 2 php overriding magento mage magento-1.7
你好朋友我需要骑过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>
Run Code Online (Sandbox Code Playgroud)
这是我的控制器代码 \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;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
请帮我改写控制器
我的代码在哪里出问题?
自Magento 1.3(2009)以来,这种重写被弃用了.你可以在这里阅读更多相关信息.
您想要做的事情如下:
<admin>
<routers>
<adminhtml>
<args>
<modules>
<companyname_exportproduct before="Mage_ImportExport_Adminhtml">Companyname_ExportProduct_Adminhtml</companyname_exportproduct>
</modules>
</args>
</adminhtml>
</routers>
</admin>
Run Code Online (Sandbox Code Playgroud)
你的类名和要求看起来也有些偏差.并且最好不要使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
为了防止你忘记我在app/etc/modules中包含你必须拥有的文件以使你的模块处于活动状态:
<config>
<modules>
<Companyname_ExportProduct>
<active>true</active>
<codePool>community</codePool>
</Companyname_ExportProduct>
</modules>
</config>
Run Code Online (Sandbox Code Playgroud)