私はCodeIgniterをテストしており、簡単なブログを作成しようとしています。 CodeIgniter siteのビデオチュートリアルは素晴らしいですが、非常に不完全です。私はMVCの構造にあまり慣れていないので、モデルがどのように使われているか正確には疑問に思います。たとえば、私は現在ブログの「管理」部分を行っています。これにより、エントリの作成、削除、変更ができます。ビューにはxhtmlのみが含まれ、コントローラは残りの部分を処理します。モデルには何が必要ですか?モデルに関連するすべてのデータベース(挿入、更新、選択など)が発生していますか?CodeIgniterのブログ:モデルはどこから始まり、コントローラーは終了しますか?
答えて
あなたが求める人に依存します。
モデル(検証、データ取得など)にできるだけ多くのデータを置いて、必要なデータを得るためにコントローラを突き刺してから、ビューに渡すようにする人がいます。
1つのモデルに複数のコントローラがアクセスしている場合、それらの共通のものは共通の場所に置いてはいけません(共通のものが実際にモデルと関係する限り)?
これは良い答えですが、ここではモデルに関する良い記事をいくつかの追加読書として指摘したいと思います:http://blog.astrumfutura.com/archives/373-The-M-in-MVC-Why-モデルは間違っていて、不評です.html –
@Jani:すばらしい記事、リンクありがとうございます。 – nilamo
コントローラーはhttpパラメーターを取って、モデルがダイジェストできるものに何かを変えるだけです。コントローラーは、クライアントとサーバー間のカップリング・エージェントです。このようにすると、xml、json、またはその他のトランスポートを使用して他のクライアントをサーバーすることを決定したときに、モデルコードを再利用することができます。 –
モデルは=「データベースと話し、」 ビューは=オブジェクトであるユーザーインターフェースを構築する コントローラは=司令官であることを...彼は、ユーザからのコマンドを持って、その後、彼はモデルに渡し、ユーザに仕えることをオブジェクトでありますビューを通して。
シンプルなブログを作成するには、Codeigniterの開始をお読みください。あなたはビデオを見た後、あなたに多くの助けになります。コード署名者の参考文献は良好に文書化され、よく説明されている。まずそれを試してください。
モデルはアクティブなレコードパターンの実装ではありません。それはデータの処理がどこに行くべきかです。また、dbに接続するいくつかの方法を提供する必要がありますが、唯一の目的はdbアクセスではありません。 – AntonioCS
データベースとの会話は、常にアクティブなレコードではありません。アクティブなレコードを模倣するために私のモデルを手動で作成します(それはとてもシンプルでフレキシブルではありませんが)。しかしMVCのモデルは、CIのDB althougと話すことになっていました。それは必要ではありません(あなたは好きなことをするためにビューとコントローラーを使うことができます) – nightingale2k1
コードシナーの紹介ビデオはフレームワークができることを示していますブログのプロジェクトを始めるには大変です。 ビデオでは、セキュリティやその他の重要なことは気にしません。モデルを使用する方法は示されていません(これは私がここで質問している理由です^^;) – Manu
モデルにはすべてのデータベース関連が含まれており、すべての基本的なCRUD操作(作成、取得、更新、削除)を実行する必要があります。
コントローラは、モデルとビュー間のすべての通信を処理する必要があります。たとえば、新しい投稿を追加するためのフォームがある場合は、そのフォームのビューがコントローラから呼び出されます。コントローラーは何かが送信されたかどうかを確認し、何かがある場合はポストモデルから作成/挿入メソッドを呼び出します。
私の場合、モデルは自分のデータに「汚い」作業を行う場所です。私はモデル内のデータベースにデータをフェッチ、挿入、更新します。私はデータベース内の1つのテーブルに対して1つのモデルを作成します。
コントローラは、私が構築するページのロジック中心になります。できるだけスリムにする必要があります。関数が1画面を超えると、それは長すぎます(コントローラ内で行われなければならないフォーム検証を除いて)。これは、モデルが再生する場所です。コントローラはデータをモデルに渡すだけです。モデルのデータをチェック、処理、フォーマットします。私のコントローラは、処理されたデータをモデルから取り出し、それを表示して終了します。
さらに、モデルは必ずしもデータベース関連のタスクを実行します。私はまた、モデルを使ってクッキーからカスタムデータを取得します。私にとっては、それはデータであり、モデルはコントローラ/ビューで使用するために処理する必要があります。 –
これも私の選択です。私のモデルはデータベース機能を備えており、それだけです。ライブラリはデータベース関連ではない共通の機能を実行し、コントローラはデータを収集してビューに配信するだけです。 –
- 1. SQL Serverの開始/終了ログはどこにありますか?
- 2. .Netメモリダンプ:!eeheap -gc:GC世代はどこで開始し、終了しますか?
- 3. このアルゴリズムは終了しますか?
- 4. GCEスタートアップスクリプトの終了コードはどこにありますか?
- 5. JVMの最適化はどこから始まりますか?
- 6. WP7 Silverlightのコードはどこから始まりますか?
- 7. ゲームは実際にどこから始まりますか?
- 8. HashMap/HashTable - バケットの終わりまたは開始または終了に衝突を追加しますか?
- 9. アプリケーションはドックアイコンから終了せず、代わりにqtを終了します
- 10. UI5はコントローラーからモデルに新しいデータをバインドします
- 11. マーキーはどこから終了するのですか?
- 12. .netメソッドから例外として、終了または終了しないエラーがありますか?
- 13. スレッドが終了したらどうなりますか?
- 14. CodeIgniterのコントローラーを介してモデルにパラメータを渡します。
- 15. Puput(Wagtailベースのブログ) - ファイルはどこにありますか?
- 16. パケットがどこで終わるか、どこで始まるかはどこで決まるのですか?
- 17. コントローラーのモデルを更新しますか?
- 18. Exchange 2013で開始/終了する予定のイベントはありますか?
- 19. このデータの解析はどこから始めますか?
- 20. このデータベースの設計はどこから始めますか?
- 21. SQL:開始日と終了日を計算する(終了から終了まで)
- 22. 開始オブジェクトから終了オブジェクトまでのデータベース内のオブジェクトをループします
- 23. アプリケーション終了時にwebviewのクッキーはどうなりますか?
- 24. テキストファイルのデータベースへの変換はどこから始まりますか?
- 25. 終了日から開始日までのパンダdate_range
- 26. GenTraversableOnceはどのようにflatMapメソッドで終了しますか?ここ
- 27. AsyncTaskはしばらくしてから終了します
- 28. セレンスクリプトはしばらくしてから終了します
- 29. 終了日は開始日より前ですか?
- 30. テキストセクションはどのアドレスから始まりますか?
なぜ誰かがこれを投票しましたか?これまでにMVCを使ったことがない人は、非常に有効な(そして一般的な)質問です。 – nilamo
質問があまりにも具体的で(codeigniterについて)、一般的にはMVCについてあまりないからです。 – MarmouCorp
私は理解することができますが、MVCについて多くのことを知らなければ、それが言語/フレームワークにとらわれないことを知らないかもしれないので、できるだけ自分の状況にどのように適用するかについて詳細を提供します。 – nilamo