4

Zend View Helper でデータベース マッパーを使用するのは良い方法ですか? 私の場合、このヘルパーは<div>、リアルタイムで変化し続け、アプリケーションにあるすべてのビューに表示されるボックスを作成しているためです。そのオブジェクトをコントローラーのデータベースからロードして、毎回ビューに割り当てることはできません。

次のような zend ビュー ヘルパーを使用する場合に従うべき適切なプログラミング プラクティスを誰かが教えてくれれば、本当に役に立ちます。

  • ビューヘルパーでビューに何かを割り当てても問題ない場合$this->view->variable = ... ;
  • View Helpers でモデルを作成して使用しても問題ない場合。
  • 次のように、View Helper 内で Zend_View で利用可能なメソッドを使用しても問題ない場合$this->view->baseUrl('...');
4

1 に答える 1

2

ビューからモデルで論理的なことを行わない限り、2番目と3番目の箇条書きは私には正しいようです。モデルとビューの間のリンクは読み取り専用でなければなりません。

最初のポイントに関しては、ビューに何も割り当てる必要はありませんreturn.HTML出力をビューに直接出力する必要があります。

最初の質問については、このタスクに特化したビュー ヘルパーを作成して、ビュー ヘルパーとマッパーの間の単純なプロキシとして使用できます。1 つのビュー ヘルパーを使用すると任意のマッパーにアクセスでき、他のビュー ヘルパーはこのビュー ヘルパーを使用してマッパーを取得できます。

Trygve Reenskaug が MVC についてどう考えているか見てみましょう。

モデル

モデルは知識を表します。モデルは、単一のオブジェクト (どちらかというと面白くない) である場合もあれば、オブジェクトの構造である場合もあります。

一方ではモデルとそのパーツ、他方ではモデルの所有者によって認識される表現された世界との間には、1 対 1 の対応が存在する必要があります。

ビュー

ビューは、そのモデルの (視覚的な) 表現です。通常、モデルの特定の属性を強調表示し、他の属性を抑制します。したがって、プレゼンテーション フィルターとして機能します。

ビューはそのモデル (またはモデル パーツ) に添付され、質問をすることによってモデルからプレゼンテーションに必要なデータを取得します。また、適切なメッセージを送信してモデルを更新することもあります。これらの質問とメッセージはすべて、モデルの用語に含まれている必要があります。したがって、ビューは、それが表すモデルの属性のセマンティクスを認識している必要があります。

コントローラー

コントローラーは、ユーザーとシステム間のリンクです。関連するビューが画面上の適切な場所に表示されるように配置することで、ユーザーに入力を提供します。ユーザーにメニューを表示するか、コマンドやデータを与えるその他の手段を提供することにより、ユーザー出力の手段を提供します。コントローラーは、このようなユーザー出力を受け取り、それを適切なメッセージに変換して、これらのメッセージを 1 つ以上のビューに渡します。

于 2012-02-28T12:49:31.770 に答える