1

私の会社は、ブラジルのビジネス ルールのニーズに合わせて Magento 用のモジュールを作成しています。

機能を追加するためにコア モデルをオーバーライドする必要がある場合もあれば、一部の機能を変更するためにコア モデルを書き直す必要がある場合もあります。この変更を行うためのベスト プラクティスはどれかは疑問です。たとえば、モジュールが他のモデルによって所有されているいくつかの動作を変更する必要がある場合。

変更したファイルを「local/mycompany/modules...」の下に作成する必要があることはわかっていますが、以下で説明する問題に直面しています。

簡単な例は次のとおりです。Customer モデルは、最後の 3 文字の前に「-」を付けて「99999-999」マスクを使用して郵便番号を追加する必要があります。それは大丈夫です、それは完了し、機能しています。ただし、この郵便番号を使用して計算する必要がある場合は、「-」文字を削除する必要があります。これは、書き換えられた「Shipping/Rate/Request.php」モデルで作成されました。

それが私たちの疑問のポイントです。どれが最高ですか?

「local/mycompany/Shipping/Model/Rate/Request.php」の新しい「Shipping」モジュール内でこれを書き換えますか、それとも「Customer」モジュールのディレクトリ構造内でこれを書き換えますか?

決定する必要がある構造について混乱しています。

重要なことは、個別のモジュールとして書き直したモジュールを配布または販売しないことです。

ここにいくつかのコードを入れます:

郵便番号は、「Customer」モジュールによって受信され、Javascript によってマスクが入力されます。この「顧客」モジュールは、顧客データベースにフィールドを追加します。

ここでは、「Customer」モジュール内の「Shipping/Rate/Request.php」を書き換えます。

"Customers" モジュールの config.xml で:

<shipping>
  <rewrite>
    <rate_request>Mycompany_Customer_Model_Shipping_Rate_Request</rate_request>
  </rewrite>
</shipping>

次に、ファイル「Mycompany/Customer/Model/Shipping/Rate/Request.php」には、郵便番号から「-」文字を削除するコードが含まれています。

私たちの疑問は次のとおりです。場合によっては、「Shipping/Rate/Request.php」をもう一度書き直して、他のメソッドを変更する必要があります。どれが最高ですか?

  1. すべての書き換えは、元のモジュール内で行われますか? 同じクラスの繰り返しファイルの作成。
  2. 「Mycompany」名前空間内で Magento のコアと同じディレクトリ構造を使用し、各クラスの 1 つのファイル内で必要なものをすべて変更しますか? Magentoのコアのような?

必要なことを説明できるかどうかわかりません。

ありがとう!

4

1 に答える 1

0

モジュールのコンテンツは、そのモジュール フォルダー内に保持することをお勧めします。

あなたが話している拡張がモジュールの機能の一部である場合は、それらをそのモジュールのフォルダー内に配置する必要があります。パスは local/mycompany/Mymodule/Model/Shipping/Rate/Request.php になります。

書き直された Request.php が Shipping モジュールから来ることを明確にするために、dir 構造にこの余分なレベルを作成しますが、これは絶対に必要ではありません。

これが良いプラクティスである理由は、もちろんモジュール性です。1 つのフォルダーに含まれるモジュールの追加、削除、およびバージョン管理がはるかに容易になります。app/etc/modules にあるモジュールの xml ファイルと、モジュールのディレクトリにある config ファイルについて考えてみてください。それらは、モジュールのディレクトリにあるものと、それに属するすべての書き換えではなく、異なるモジュールフォルダーにあるものを説明します。

さらに、複数のモジュールから同じモデルを拡張または書き直し、独自のモジュールを削除または完全に書き直すことを決定した場合、それらが app ディレクトリに散らばっている場合、どのファイルまたはファイルの一部がそれに属するかをどのように知ることができますか? .

Magento モジュールの作成方法の詳細については、http://www.magentocommerce.com/magento-connect/create_your_extension/もご覧ください。

于 2013-06-19T16:39:51.680 に答える