php - Magento 中的 Controller 覆盖

标签 php magento overriding magento-1.7 mage

你好 friend ,我需要超越 magento 核心 Controller

我想覆盖 Mage\ImportExport\controllers\Adminhtml\ExportController.php

在我的community\compnyname\modulename\controllers\Adminhtml

这是我在\compnyname\modulename\etc 中的 config.xml

<?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>

这是我在 \compnyname\modulename\controllers\Adminhtml\ExportController.php 中的 Controller 代码

<?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;
    }
}
?>

请帮我覆盖 Controller

我的代码哪里有问题?

最佳答案

自 Magento 1.3 (2009) 以来,不推荐使用这样的重写。您可以阅读更多相关信息 here .

你想要做的是像下面这样:

<admin>
    <routers>
        <adminhtml>
            <args>
                <modules>
                    <companyname_exportproduct before="Mage_ImportExport_Adminhtml">Companyname_ExportProduct_Adminhtml</companyname_exportproduct>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>

你的 classname 和 require 看起来也有点不对劲。最好不要使用 php 结束标记结束 php 类文件,因为它可能会意外包含一个空格,这会弄乱发送的 header 顺序。

所以我说过我会将您的类文件更改为:

<?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;
    }
}

以防万一你忘记了我在 app/etc/modules 中包含了使你的模块处于事件状态的文件:

<config>
    <modules>
        <Companyname_ExportProduct>
            <active>true</active>
            <codePool>community</codePool>
        </Companyname_ExportProduct>
    </modules>
</config>

关于php - Magento 中的 Controller 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13228235/

相关文章:

c++ - 派生类的内联函数能否覆盖基类的非内联函数?

php - 在 phpunittest 中访问实体管理器

php - 使用修剪、stripslashes 和 htmlspecialchars 时,撇号会导致插入查询出现问题

C#:覆盖返回类型

magento模型不保存所有字段

magento - 如何实现购物车 block 的magento缓存打洞

python - 覆盖扩展 Enum 的类的 __new__

php - 实时多人游戏技术

php - 比较日期不起作用

Magento 2 结账运费收集