0

Webベースのフレームワークで作成するコントローラーの数に関するガイドラインがあるかどうか疑問に思いました。私はそれが要件に依存することを知っています。しかし、それでも、サインアップ、ログイン、ユーザー認証、電子メールの送信、ユーザープロファイルの編集などを含む基本的なアプリケーションを検討する場合、コントローラーについてどのように決定しますか?

そして、多くの共通の機能がある場合、それらすべてを保持するために別のコントローラーを作成しますか?Zendのようないくつかのフレームワークは、そのためのヘルパーファイルを作成することを推奨しています!さまざまな機能のヘルパーファイルのカテゴリを作成しますか?

4

1 に答える 1

1

ルーティングを見ると、Zend Frameworkで実行するコントローラーの数、さらにはアクションについて、ある種のガイドラインがあります。これを何らかの方法(少なくする)または別の方法(さらに多くする)で変更するために、かなりの数のことを実行できることを覚えておく必要があります。

ルーティングに関するZFの基本的かつ一般的なルールは、コントローラーおよびアクションと一致するリンクパスを持つことです。

www.yourdomain.com/controller/action

ルーティングは、対応するコントローラーにディスパッチし、それとともに名前付きアクションにディスパッチします。この基本的なルールに従うと、見たいパスの数に一致するコントローラーの数になります。

基本的に、Webサイトのすべての機能のルートパスを作成し、最終的には同じ数のコントローラー(1つのアクション)を作成するか、1つのパス内のすべてを組み合わせて1つのコントローラー、ただし同じ数のアクションにすることができます。

最終的には、Webサイトの一般的な機能を1つのパスとコントローラーに結合する必要があります。たとえば、ユーザー管理(サインアップ、プロファイル編集)に関連するすべてのものを/userパスとUserControllerに結合します。

あなたの例として、ユーザー認証はそれ自身のコントローラーを持たないが、ログインコントローラーまたはそのコントローラーによって使用されるモデルの内部で行われるものだと思います。

アップデート

コントローラとそのアクションはリクエストを解釈し、他のメソッドにのみ委任する必要があります。これらのメソッドを独自のクラスに保持することは有益な場合があります。このメソッドとクラスをどのように構成するかはあなた次第です。Zendの方法は、それらを独自のアプリケーションライブラリに保持することです。たとえば、電子メールの送信は、独自のアプリケーションライブラリ内の別のクラス(Zendクラスの隣および場合によっては拡張)によって保持および実行する必要があります。

連絡先ページがある場合は/contact、ContactControllerとのリンクがあります。indexActionは、フォームページを表示するためにすべてを委任します。フォーム/contact/submitには送信ボタンへのリンクを含めることができ、対応するsubmitActionは電子メールライブラリクラスを接続して電子メールを送信します。submitActionは、最終的に_redirect('/submit/thankyou')またはのようなものを呼び出す場合があります/submit/error。ご想像のとおり、ありがとうページまたはerrorActionを表示して、エラーが発生したことをユーザーに通知するthankyouActionがあります。

于 2013-03-04T20:49:26.737 に答える