0

こんにちは皆さん、私は Zend Framework ベースのアプリケーション内でモジュールを使用する方法について少し混乱しています。アプリケーション内でモジュールがサブアプリケーションとして機能することについて読んだことから、モジュールに入る要素とモジュールに入る要素との間の境界線はどこにありますか?コントローラ内で処理できます。たとえば、ホーム予約アプリケーションのように、次の機能があります。

ハウス管理 料金管理 オンライン予約+予約管理

管理者ユーザー、予約を行う顧客、予約用に設定された家を所有する家主の 3 種類のユーザーがいるとします。モジュールの設定方法は次のようになります。

admin
->controllers
  ->houseController
  ->rateController
  ->bookingController
  ->customersController
landlord
->controllers
  ->houseController
  ->rateController
  ->bookingController
customer
->controllers
  ->bookingController

またはそれは次のようなものでしょうか:

modules
->Booking
->Rate
->Customers

後者の形式は、コントローラーをモジュールに変換するのに少し似ているように思えます。ここでの正しいアプローチは何ですか?

元のリストでは、各モジュールにコントローラーが繰り返されています。たとえば、管理モジュールの houseController - 管理者はすべての家主のすべての家を表示できますが、家主は自分の家のみを表示できます。技術的には、ここでコードの 90% を繰り返していますが、表示できるリストを制限するために ACL を使用できるとは思えないため、これは正しいこととは思えません。このロジックの正しいアプローチは何ですか?

4

3 に答える 3

1

わかった。答えてみよう...

これは、(アプリケーション アーキテクチャに関して) 古典的な最適化の課題です。目標が何であるかに基づいて、さまざまな最適化アプローチがあります。結果として得られる技術的機能に関して、アプリケーション アーキテクチャを最適化することを好みます。必要なモジュールの機能が

  • 管理者
  • 家主
  • お客様

機能範囲が異なる場合は、それらを分離しておいてください (これにより、ACL の定義も簡素化されます)。

質問に投稿した内容に基づいて、いくつかのコントローラーが「重複」しています。

  • ハウスコントローラー
  • レートコントローラー
  • 予約コントローラー

それらは複数回使用されます。機能的には、1 つのモジュールでのみ使用する必要があります。それらを分離できない場合は、個別のモジュールは必要ありません...

これにより、モジュールの使用方法の概要が得られることを願っています。

于 2013-01-01T10:16:09.553 に答える
1

この機能のほとんどは、モデルにより適しているように思えます。管理者は通常、管理に必要なより多くの機能を持っているため、顧客と所有者向けに異なるビューを備えたプロパティコントローラーを備えたデフォルトのモジュールだけで済む場合があります。

//bare minimum, you may need to add controllers andd models for user/owner objects and rate managment
/application
    /controllers
        /IndexController // default entry to application, login, authentication
        /ErrorController
        /PropertyController // actions to view, book and reserve a property object, may provide some extra functions for owners.
    /modules
        /admin
            /IndexController // provides actions for administration activities such as managing user and owners and setting ACL and Authentication.

これは単なる私の意見です。ZF1 のモジュールは ZF2 のモジュールとはまったく異なる動物であることに注意してください。

于 2013-01-02T10:10:32.103 に答える
0

質問は古いですが、まだ答えられていないと思います。私自身、ここ数日間、e コマース CMS プロジェクトを立ち上げ、シルバー ライト Prism のバックグラウンドから Zend Framework の基礎を学んでいます。私が提案できることの 1 つは、モジュールを小さくする必要がないことを理解することです。モジュールのまさに定義は「独立した自己完結型ユニット」であるため、あなたの場合、「BookingModule」があり、終了時に任意のアプリケーションにチャックでき、適切なタイインで他のアプリケーションと通信できますモジュール。レイアウトの問題は、モジュールに依存してさまざまなレベルのアクセスを分離することです (返信では、基本的に「これをどうすればよいか」と尋ねます)。やりたいことは、ある種の認証方法を使用して、現在のユーザーが特定のアクションを実行できるかどうかを確認することです。あなたが私たちに与えてくれたものから、おそらく複数のアクションを備えたロールベースの認証方法を提案します(この部分はまだ自分で決定しています)。

Zend フレームワーク

  • MVC を利用するモジュールを含む「アプリケーション」をホストします

モジュール

  • あらゆるアプリケーションにプラグインできる独立した自己完結型ユニット
  • アプリケーション内の他のモジュールと通信するためのフック/タイインを持つことができます

MVC

  • モデル: 検証によるデータの完全性の保証
  • ビュー: モデルのデータをユーザーに表示します
  • コントローラ: データを編集するアクションを通じてユーザー入力を処理します
    • アクション: ユーザーがこのアクションを確実に使用できるようにするには、セキュリティ ロジックをここに配置する必要があります。

役割

  • 認証で使用する列挙型

TL;DR プロジェクトでは、現在のユーザーがそのアクションを実行できることを確認するために、1つのモジュール、4つのコントローラー、3つのロール、およびコントローラーのアクションに関連付けられた承認サービスが必要です。これにより、コードの繰り返しが防止され、コードを書き直さなくても拡張可能になります。

これを読んで、アクションの承認: アクティビティ ベースのチェックを理解してください

編集:おそらく、それぞれをモジュールにすることは実行可能であるため、何の問題もないことに注意する必要があります.他の2が必要です。しかし、私の理解では、1つのモジュールだけが必要です

于 2013-04-15T05:20:07.947 に答える