2

こんにちは友人私は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>

これは私のコントローラーコードです\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;
    }
}
?>

コントローラーをオーバーライドするのを手伝ってください

私のコードのどこに問題がありますか?

4

3 に答える 3

9

このような書き換えは、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>

あなたのクラス名とrequireも少し外れています。また、phpクラスファイルをphp endタグで終了しないことをお勧めします。これは、送信されたヘッダーの順序を混乱させる空白が誤って含まれる可能性があるためです。

つまり、クラスファイルを次のように変更すると言ったのです。

<?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>
于 2012-11-05T10:11:24.587 に答える
2

以下のリンクを確認してください。リンク1リンク2これがお役に立てば幸いです。


于 2012-11-05T08:57:03.693 に答える
2

これは、コントローラーのインクルードパスに関する小さな通知です。

このインクルードパスは、 Magentoコンパイラモードがオンになっている場合にエラーを引き起こす可能性があります。

require_once 'Mage/ImportExport/controllers/Adminhtml/ExportController.php';

その代わりに使用するのは良いことです

require_once Mage::getModuleDir('controllers', 'Mage_ImportExport').DS.'Adminhtml_ExportController.php';

より安全になります。お役に立てれば..

于 2014-01-23T10:06:58.153 に答える