0

Magentoの Checkout コントローラーをオーバーライドできないようです。のフォルダをコピーしましたapp/code/local/Checkoutが、機能していないようです。

フォルダをコピーして貼り付けただけの他の人は、それを正しく理解しているようです。やらなければならないことはありますか?

4

1 に答える 1

1

これは、コントローラーを拡張するための推奨される方法ではありません。Checkout OnepageController を拡張するとします。

これを行う正しい方法は次のようになります。

1.) 正しいモジュールを特定するか、このための新しいモジュールを作成します。

app/code/local/Mel/Gallosa (app/etc/modules でモジュールを有効にすることを忘れないでください)

ファイル etc/config.xml および controllers/OnepageController.php を追加します。

ファイルの内容は

<?xml version="1.0"?>
<config>
    <modules>
        <Mel_Gallosa>
          <version>0.1.0</version>
        </Mel_Gallosa>
    </modules>
    <frontend>
        <routers>
            <checkout>
                <use>standard</use>
                <args>
                    <modules>
                        <Mel_Gallosa before="Mage_Checkout">Mel_Gallosa</Mel_Gallosa>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>

次に、新しいコントローラーファイル

<?php
require_once 'Mage/Checkout/controllers/OnepageController.php';
class Mel_Gallosa_OnepageController extends Mage_Checkout_OnepageController
{
    /*you can now overide any method here. Remember that you want to extend code in an Object Orientated fashion. Call the parent functions when appropriate and at the right time. Only replace methods that you are trying to overwrite. There is no need to dump all methods here. */

  //here is an example

  public function indexAction()
  {
      Mage::log('we have now overwritten the index action',null,'mel.log');

      parent::indexAction(); /* this means that if there are any core updates you will get them too :) */
  }
}

以上です。私のアドバイスは、単純にフォルダをコピーすることではありません。自分がやろうとしていることを明確に考え、後で「足を撃たれる」ようなことをしないようにします。OOをそのままにしておいてください!

于 2013-10-14T11:40:59.070 に答える