3

現在、ECサイトを開発中です。public および admin モジュールがあります。

製品の表示や注文の作成など、両方のモジュールで同じ機能を提供する場合があります。ただし、製品の追加 (管理者にある) のように、パブリックまたは管理者に存在する機能もいくつかあります。

私たちの問題は、共通の機能がロジックの重複につながることです。両方のモジュールに実装する必要があります。

この問題を解決する 1 つの方法は、レイヤーを利用することです。そこで私たちがしたことは、共通のロジックをモデルに移すことでした。ただし、コントローラーは以下に示すようなコードを複製しています。

public function invoice() {
    $this->Invoice->create();

    $this->Invoice->setCustomer($this->getCurrentUser);

    $invoice_items = // get list of items from post
    $this->Invoice->setItems($invoice_items);

    $this->Invoice->save();
}

私の質問は、このロジックをカプセル化する Web サービスを作成するのが賢明であり、管理モジュールとパブリック モジュールから呼び出すだけでよいということです。

Magento はパブリック パネルと管理パネルをどのように実装しますか。そして、そのロジックをどのように管理しますか..

4

1 に答える 1

0

そうしないことをお勧めします。あなたの質問から、あなたがどのような種類の「ロジック」を参照しているのかは明確ではありませんが、あなたの例からは複雑すぎないようです。一般に、ビジネス ロジックは、コードのモデル、コントローラー、またはヘルパー部分内にコーディングする必要があります。拡張機能のメイン xml ファイルで依存関係を適切に設定する限り、別の拡張機能に存在することさえできます。

ロジックをヘルパー クラスに配置することでメリットが得られるようです。デフォルトのヘルパー ファイルは /app/code/community/company/extension-name/Helper/Data.php にあります。次に、次のコードを使用して、バックエンド (ブロック、モジュール、またはコントローラー) の任意の場所でヘルパー メソッドを呼び出すことができます。

Mage::helper('extension-name')->getLogic()

または、次のようにビュー (phtml ファイル) から同じヘルパー メソッドを呼び出すことができます。

$this->helper('extension-name')->getLogic()
于 2013-09-24T23:55:52.827 に答える