2011-07-18 13 views
1

検索を明示的にビューで行うか、コントローラで行い、結果をビューに渡す必要がありますか?検索はビューで実行する必要がありますか?

私の推測は、コントローラをスキニーに保つためのビューです。もしそうなら、コントローラは検索パラメータをビューに渡すべきですか、またはビューはそれらを$ _POST、$ _GET変数を通して得ることができますか?私の取り組みは、コントローラが委任(ルーティング)と要求の処理を担当しているため、ジョブを実行するために必要なデータ(モデルと同じ)をビューに渡す必要があると思います。これは正しいです?

おかげ

+2

私自身のプロジェクトでは、コントローラは要求を処理し、ビュー変数に必要なすべての情報を追加するデータをコントローラに返すモデル内の関数を呼び出します。私はビューが表示するだけでなく、(たくさんの)プログラミングロジックを含むべきだと思う – PeeHaa

+0

私はMVCで考え、ビューは、データを表示する必要があるときに、モデルに連絡する権利がありますか? – BDuelz

+0

です。あるモデルの関数をビューの中から呼び出すことは大丈夫です。いくつかのものはコントローラーで簡単に「あらかじめ解析されている」/「過ちがある」ことがあります。私は結局、それはすべて味の問題だと思います。 – PeeHaa

答えて

5

あなたはコントローラがスキニー保つ必要があり、それへの帰結はfat modelsを持つことであるということですね。ここでは、検索パラメータをモデルに渡す必要があります。

コントローラーは$_REQUESTパラメーターを扱うことができますが、モデルクラス用の一般的なものに変換する必要があります。検索パラメータと一致するモデルのコレクションを返すことができ、コントローラはそのコレクションをビューに設定できます。

+0

したがって、ビュークラスは与えられた内容を表示するだけですか?直接モデルと接触することはできませんか? – BDuelz

+0

ビューはモデルの表示方法を選択する責任があります。たとえば、意図した出力がXMLの場合、ビューはモデル上で 'toXml()'メソッドを呼び出すことができます。別のビューでは、モデルを別の方法で表現することもできます。ここでも、これはモデル内でより多くのロジックに役立ちます。 – cmbuckley

+1

しかし、toXmlメソッドは、プレゼンテーションロジックをモデルに入れる必要はありませんか?そのデータをxmlファイルで表示するように準備する新しいビューを作成するだけではどうですか? – BDuelz

関連する問題