2009-06-25 6 views
8

私はCodeIgniterをテストしており、簡単なブログを作成しようとしています。 CodeIgniter siteのビデオチュートリアルは素晴らしいですが、非常に不完全です。私はMVCの構造にあまり慣れていないので、モデルがどのように使われているか正確には疑問に思います。たとえば、私は現在ブログの「管理」部分を行っています。これにより、エントリの作成、削除、変更ができます。ビューにはxhtmlのみが含まれ、コントローラは残りの部分を処理します。モデルには何が必要ですか?モデルに関連するすべてのデータベース(挿入、更新、選択など)が発生していますか?CodeIgniterのブログ:モデルはどこから始まり、コントローラーは終了しますか?

+4

なぜ誰かがこれを投票しましたか?これまでにMVCを使ったことがない人は、非常に有効な(そして一般的な)質問です。 – nilamo

+0

質問があまりにも具体的で(codeigniterについて)、一般的にはMVCについてあまりないからです。 – MarmouCorp

+2

私は理解することができますが、MVCについて多くのことを知らなければ、それが言語/フレームワークにとらわれないことを知らないかもしれないので、できるだけ自分の状況にどのように適用するかについて詳細を提供します。 – nilamo

答えて

9

あなたが求める人に依存します。

モデル(検証、データ取得など)にできるだけ多くのデータを置いて、必要なデータを得るためにコントローラを突き刺してから、ビューに渡すようにする人がいます。

1つのモデルに複数のコントローラがアクセスしている場合、それらの共通のものは共通の場所に置いてはいけません(共通のものが実際にモデルと関係する限り)?

+4

これは良い答えですが、ここではモデルに関する良い記事をいくつかの追加読書として指摘したいと思います:http://blog.astrumfutura.com/archives/373-The-M-in-MVC-Why-モデルは間違っていて、不評です.html –

+0

@Jani:すばらしい記事、リンクありがとうございます。 – nilamo

+0

コントローラーはhttpパラメーターを取って、モデルがダイジェストできるものに何かを変えるだけです。コントローラーは、クライアントとサーバー間のカップリング・エージェントです。このようにすると、xml、json、またはその他のトランスポートを使用して他のクライアントをサーバーすることを決定したときに、モデルコードを再利用することができます。 –

-1

モデルは=「データベースと話し、」 ビューは=オブジェクトであるユーザーインターフェースを構築する コントローラは=司令官であることを...彼は、ユーザからのコマンドを持って、その後、彼はモデルに渡し、ユーザに仕えることをオブジェクトでありますビューを通して。

シンプルなブログを作成するには、Codeigniterの開始をお読みください。あなたはビデオを見た後、あなたに多くの助けになります。コード署名者の参考文献は良好に文書化され、よく説明されている。まずそれを試してください。

+0

モデルはアクティブなレコードパターンの実装ではありません。それはデータの処理がどこに行くべきかです。また、dbに接続するいくつかの方法を提供する必要がありますが、唯一の目的はdbアクセスではありません。 – AntonioCS

+0

データベースとの会話は、常にアクティブなレコードではありません。アクティブなレコードを模倣するために私のモデルを手動で作成します(それはとてもシンプルでフレキシブルではありませんが)。しかしMVCのモデルは、CIのDB althougと話すことになっていました。それは必要ではありません(あなたは好きなことをするためにビューとコントローラーを使うことができます) – nightingale2k1

+0

コードシナーの紹介ビデオはフレームワークができることを示していますブログのプロジェクトを始めるには大変です。 ビデオでは、セキュリティやその他の重要なことは気にしません。モデルを使用する方法は示されていません(これは私がここで質問している理由です^^;) – Manu

2

モデルにはすべてのデータベース関連が含まれており、すべての基本的なCRUD操作(作成、取得、更新、削除)を実行する必要があります。

コントローラは、モデルとビュー間のすべての通信を処理する必要があります。たとえば、新しい投稿を追加するためのフォームがある場合は、そのフォームのビューがコントローラから呼び出されます。コントローラーは何かが送信されたかどうかを確認し、何かがある場合はポストモデルから作成/挿入メソッドを呼び出します。

2

私の場合、モデルは自分のデータに「汚い」作業を行う場所です。私はモデル内のデータベースにデータをフェッチ、挿入、更新します。私はデータベース内の1つのテーブルに対して1つのモデルを作成します。

コントローラは、私が構築するページのロジック中心になります。できるだけスリムにする必要があります。関数が1画面を超えると、それは長すぎます(コントローラ内で行われなければならないフォーム検証を除いて)。これは、モデルが再生する場所です。コントローラはデータをモデルに渡すだけです。モデルのデータをチェック、処理、フォーマットします。私のコントローラは、処理されたデータをモデルから取り出し、それを表示して終了します。

+0

さらに、モデルは必ずしもデータベース関連のタスクを実行します。私はまた、モデルを使ってクッキーからカスタムデータを取得します。私にとっては、それはデータであり、モデルはコントローラ/ビューで使用するために処理する必要があります。 –

+0

これも私の選択です。私のモデルはデータベース機能を備えており、それだけです。ライブラリはデータベース関連ではない共通の機能を実行し、コントローラはデータを収集してビューに配信するだけです。 –

関連する問題