OK、Code igniter を使用して小さなテスト サイトを作成してきました。これまでのところ、ログインとログアウトは完了しています。それらはすべて適切な MVC に従っており、コントローラーのロジック、モデルの実際の作業、およびビューのプレゼンテーションであると思います。ただし、フロントサイトにニュースフィードを含めるなどの操作を行うときに問題が発生しました。ログインは必要ありません。ニュースフィードの表示を担当するモデルへの呼び出しをホームビューに配置することだけを考えていました。これは悪い習慣ですか?基本的に、ログイン時にニュースフィードやユーザーの写真などの動的なものを表示するための最良の方法は何ですか?
2 に答える
それは非常に間違っています。
理想的な世界では、すべての関数、データ呼び出し、操作、データ挿入などがモデルに含まれます。
コントローラーは、モデルからのどの呼び出しが必要かを決定し、データをやり取りするために使用されます。この時点で、コントローラーはビューに必要な情報を収集し、それらを転送できます。
ビューに含める必要がある唯一のロジックは、if/else および for each ループです。ビューに送られる前にすべてのデータを「準備」するので、日付の書式設定、空の値の処理なども行われるため、ビューは名前が散らばったプレーンな HTML にすぎません。?> 型変数。
正しく実装された MVC にインスパイアされたデザイン パターンでは、ビューはモデル レイヤーから情報を取得し、応答を作成する役割を果たします (必要に応じて、複数のテンプレートから作成されます)。つまり、ビューがモデル層からデータを要求するのは正しいことです。
避けるべきは、モデル層の状態を変更する操作です。その部分はコントローラの責任です。
注意すべきもう 1 つのことは、これは実際のビュー インスタンスがある場合にのみ適用されるということです。CodeIgniter が「ビュー」と呼ぶものは、馬鹿げたテンプレートの集まりにすぎません。テンプレートは、どこからでもデータを要求するべきではありません。