変更を行うときは、クラス全体を「ローカル」コー​​ドプールにコピーする必要がありますか

magento.stackexchange https://magento.stackexchange.com/questions/4460

  •  16-10-2019
  •  | 
  •  

質問

誰かが私のためにこれに答えてくれませんか。

ローカルコードプールでMage/Coreファイルの独自のバージョンを作成した場合、Mage/Coreファイルを完全に上書きしますか?または、私のコードで再定義されていない方法は、コアファイルからまだ継承されますか?

例。次のファイル(Exception.Php)には、いくつかのメソッド(関数)が含まれています。

~ app
->  code
  ->  core
    ->  Mage
      ->  Customer
        ->  Exception.php

ここに自分のバージョンを入れたい:

~ app
->  code
  ->  local
    ->  Mage
      ->  Customer
        ->  Exception.php

私のバージョンには1つのメソッドのみが含まれています(_beforeSave())。コアファイルには多くが含まれています。他のすべての方法は、元のファイルからMageがまだ利用できるでしょうか?

それがはっきりしていることを願っています!ありがとう。

役に立ちましたか?

解決

フォルダーにファイルを配置する場合 local (また community)からのファイルと同じパスで core コアファイルは役に立たなくなります。
ファイルを検索するMagentoの注文はです app/code/local, app/code/community, app/code/core, lib. 。 1つのメソッドのみをオーバーライドする場合は、にファイルをコピーしないでください local フォルダ。
これが素敵なチュートリアルです それはあなたに何かを適切に上書きする方法を示しています。

他のヒント

基本的に、Magentoにプログラムロジック変更の3つの異なる「有効な」方法があります

  1. イベントの使用
  2. クラスまたはコントローラーの書き換えを使用します
  3. 完全なファイルをにコピーします local プールをコードしてから変更します。

1.以上を好むことをお勧めします。 2.(Mariusのように)言及されているように、他の拡張または更新が物事を破るリスクがないことに関して、ローカルにコピーするよりも優れています。

を使用する場合 local プール、常にクラスの完全なコードを維持する必要があります(更新の場合)。

あなたの場合、あなたが適用したコードを、 - のイベントを使用して追加できるかどうかを確認する必要があります - Mage_Customer 呼び出されるオブジェクト customer_save_before.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top