0

Mage_Checkout_CartControllerのデフォルトのindexAction()をオーバーライドしようとしています。アプリ/ローカルに次のファイルを作成しました:
MyNamespace / cartStockCheck / controllers / CartController.php MyNamespace / cartStockCheck / etc / config.xml

また、app / etc / modules:MyNamespace_CartStockCheck.xml

詳細セクションの管理バックエンドにリストされているのを見ることができるので、Magentoは私の拡張機能を取得しているようですが、それ以外はカートを開いても何も起こりません。

編集:他のアドオンはCartControllerをオーバーライドしません。indexActionの誤った呼び出しも修正しました。それでも私のテキストがカートにエコーされているのを見ることができません

EDIT2:以下の私の答えを確認してください。できます!

CartController.phpの内容は次のとおりです。

<?php   
  require_once 'Mage/Checkout/controllers/CartController.php';

  class MyNamespace_CartStockCheck_CartController extends Mage_Checkout_CartController
  {
    public function addAction()
    {
        echo 'test addAction';
        parent::addAction();
    }

    public function indexAction()
    {
        echo 'test indexAction';
        parent::addAction();
    }
  }
?> 

config.xmlの内容:

<?xml version="1.0"?>
<config>
    <modules>
        <MyNamespace_CartStockCheck>
            <version>0.1.0</version>
        </MyNamespace_CartStockCheck>
    </modules>

    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <MyNamespace_CartStockCheck before="Mage_Checkout">MyNamespace_CartStockCheck</MyNamespace_CartStockCheck>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>

MyNamespace_CartStockCheck.xmlの内容:

<?xml version="1.0"?>

<config>
    <modules>
        <MyNamespace_CartStockCheck>
            <active>true</active>
            <codepool>local</codepool>
        </MyNamespace_CartStockCheck>
    </modules>
</config>
4

3 に答える 3

5

私はこれを信じていません。私のコードが機能しない理由は次のとおりです。

<codepool>local</codepool>

それ以外の

<codePool>local</codePool>

MyNamespace_CartStockCheck.xml内

「P」が大文字になっていないチュートリアルから実際にコードをコピーしました。他の拡張機能をチェックして気付くまで、これがこれである可能性があるとは思いもしませんでした。これは簡単に覚えていると思います。

于 2013-03-11T18:48:06.563 に答える
1

indexActionを修正する必要があります

     public function indexAction()
      {
         echo 'test indexAction';
         parent::indexAction();
      }  

parent :: indexAction();を呼び出す必要があります 。親ではありません ::addAction();

于 2013-03-11T12:18:01.060 に答える
0

確認する必要がある2つの理由。1.キャッシュをクリアしましたか?

  1. コンパイラモードがオンになっていないことを確認してください。コンパイラモードがオンの場合と同様に、ファイルは他の場所からではなく、incsrcフォルダからフェッチされます。

これらの2つが実行されていても、コントローラーアクション関数が呼び出されていない場合は、オーバーライドが行われたか、イベント/オブザーバーがコードを乗っ取ったかどうかを確認する必要があります。

于 2013-03-11T17:21:02.783 に答える