Adminhtmlでコントローラーをオーバーライドする


7

現在、Mage_Adminhtml_CustomerのGroupControllerをオーバーライドしようとしているため、Customer Groupsメニューにカスタムフィールドを保存するためのコードを追加できます。あなたが思うようにそれは実際には機能しません。つまり、これまでのところ、私のコントローラーはMagentoによって無視されているようですが、私が犯した間違いはありません。以下がスニペットです。

<?xml version="1.0" ?>
<config>
    [...]
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Mynamespace_CustomerGroupReturnable before="Mage_Adminhtml">Mynamespace_CustomerGroupReturnable</Mynamespace_CustomerGroupReturnable>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

そしてコントローラー:

require_once 'Mage/Adminhtml/Customer/controllers/GroupController.php';

class Mynamespace_CustomerGroupReturnable_GroupController extends Mage_Adminhtml_Customer_GroupController
{
    public function saveAction()
    {
        die(':D'); //just for testing
    }
}

欠けているものを誰かが見ることができますか?ありがとう!


1
間違ったファイルが必要だと思います。これMage/Adminhtml/Customer/controllers/GroupController.phpMage/Adminhtml/controllers/Customer/GroupController.php
マリウス

ああ、そうだね。ありがとうございました!ただし、Magentoはまだ驚かず、無視します。
HamuSumo 2013年

回答:


14

コントローラーファイルをAdmintmlフォルダーに配置します。オーバーライドするクラスの同様のフォルダーパスを使用することをお勧めします。

config.xml

<?xml version="1.0" ?>
<config>
    [...]
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <Mynamespace_CustomerGroupReturnable before="Mage_Adminhtml">Mynamespace_CustomerGroupReturnable_Adminhtml</Mynamespace_CustomerGroupReturnable>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

コントローラーファイル:

require_once 'Mage/Adminhtml/controllers/Customer/GroupController.php';

class Mynamespace_CustomerGroupReturnable_Adminhtml_GroupController extends Mage_Adminhtml_Customer_GroupController
{
    public function saveAction()
    {
        die(':D'); //just for testing
    }
}

はい、不足しているAdminhtmlフォルダーが問題の原因でした。ありがとう!
HamuSumo 2013

2
また、このため(このメソッドでは重要)、Adminhtmlの下のコントローラーへのパスが過負荷のコントローラーのパスと一致するようにします。たとえば、Mage / Adminhtml / controllers / Catalog / productController.php My_Module / controllers / Adminhtml / Catalog / productController.php
Mohamed23gharbi

0

テストを開始します。

まず、クラス定義の前にダイを追加して、クラスファイルがロードされているかどうかを確認します。

次にスペースを追加して<conf ig>、設定ファイルが読み込まれているかどうかを確認します。

バックエンドをチェックしSystem > Config > Advanced、あなたのモジュールの出力を防ぐことができるかどうか(はいの場合、module.xml中には、app/etc/modules少なくとも、ロードされています)

どのURLをテストしますか?でなければなりません:

http://magento.local/ / group / save

バックエンドの認証キーを無効にします(どこに問い合わせないでください)。URLに認証キーがないことによるエラーを防ぎます。

そして最後の言葉:コードはよさそうだ、間違いはどこかにあると思う。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.