1

そのため、コアの CustomerController massDelete アクションをオーバーライドしようとしています。これは私がこれまでに持っているものです:

config.xml

<frontend>
  <routers>
    <customer_massdelete>
      <args>
        <modules>
          <MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
        </modules>
      </args>
    </customer_massdelete>
  </routers>
</frontend>

私のコントローラー:

app/code/local/MyModule/MyExtension/controllers/CustomerController.php

<?php
require_once 'Mage/Adminhtml/controllers/CustomerController.php';
class MyModule_MyExtension_CustomerController extends Mage_Adminhtml_CustomerController {
  public function massDeleteAction() { 
   die('my controller');
  }
}

しかし、一括削除を実行すると、代わりにコントローラーに入れたダイスが実行されます。何か案は?

アップデート:

次のように解決策を試しました:

<config>
  <admin>
    <routers>
      <adminhtml>          
        <args>
          <modules>
            <MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
          </modules>
        </args>
      </adminhtml>
    </routers>
  </admin>
</config>

まだ何も...

更新 2:

私の最終的なconfig.xmlは次のようになりました:

<config>
  <admin>
    <routers>
      <adminhtml>      
        <args>
          <modules>
            <Mymodule_Myextension before="Mage_XmlConnect_Adminhtml">Mymodule_Myextension</Mymodule_Myextension>
          </modules>
        </args>      
      </adminhtml>
    </routers>
  </admin>
</config>

ただし、before="Mage_XmlConnect_Adminhtml" がある場合、ほとんどのインデックス ページに移動しようとすると、オーバーライドの問題が発生します。ただし、優先度を下げてもオーバーライドされません。だから私は再び立ち往生しています。

4

2 に答える 2

0

それで、多くの研究の後、私は最終的に問題を理解しました。私の問題はbefore="Mage_Adminhtml"in にありましたconfig.xml。エンタープライズの仕組みにより、最上位クラスをオーバーライドするだけでは十分ではありませんでした。

以前print_r(Mage::getConfig()->getNode('admin/routers/adminhtml'), true)は、それをオーバーライドしているすべてのモジュールを把握し、リストを調べていました。Mage_XmlConnect_Adminhtmlは、エンタープライズ メソッドの前にこのメソッドをオーバーライドした最後のクラスです。

私の最終的なconfig.xmlは次のようになりました:

<config>
  <admin>
    <routers>
      <adminhtml>      
        <args>
          <modules>
            <Mymodule_Myextensionbefore="Mage_XmlConnect_Adminhtml">Mymodule_Myextension</Mymodule_Myextension>
          </modules>
        </args>      
      </adminhtml>
    </routers>
  </admin>
</config>

今では完全に動作します (編集: いいえ、そうではありません...下のコメントを参照してください)

于 2013-05-15T13:05:46.900 に答える
0

config.xml が false だと思います。試してみてください:

<admin>
   <routers>
      <adminhtml>
         <args>
           <modules>
             <MyModule_MyExtension before="Mage_Adminhtml">MyModule_MyExtension</MyModule_MyExtension>
           </modules>
         </args>
      </adminhtml>
   </routers>
</admin>

参照: http://prattski.com/2010/06/24/magento-overriding-core-files-blocks-models-resources-controllers/

于 2013-05-10T14:06:21.917 に答える