back

モデルを使ってデータベースにアクセスする (5/7)

■コントローラーを作る

続いて、コントローラーを作成します。モデルを利用したアプリケーションを作る場合、CakePHPでは「モデルもコントローラーも、決まった命名規則に従って作る」という決まりになっています。モデルを利用するコントローラーは、「名前Controller」という名前で用意することになっています。

今回は「Mydata」というモデルを使いますので、コントローラーのファイルは「mydatas_controller.php」となります。そして用意するクラス名は「MydatasController」という名前になるのです。

では、「controllers」フォルダ内にファイルを作成し、以下のリストのようにソースコードを記述しましょう。とりあえず、indexアクションだけを用意しておきました。

コントローラーは、メンバー変数類とアクションメソッド(index)が用意されています。が、実を言えば、レイアウトを設定する$layout以外のメンバー変数は、全部なくてもいいです。これらは、命名規則に従って作ってあれば、$name$usesも書かなくてもちゃんと正しく認識してくれるんです。「一応、こういう変数で名前やモデル名を認識するようになっている」ということを示すために書いておきましたが、普通は省略して書きません。

さて、indexでは、Mydataからすべてのデータを取得してビューに渡す処理を用意してあります。全データを取得するのは、
$datas = $this->Mydata->find("all");
この部分です。コントローラーでは、「$this->モデル名」という形で、モデルが用意されます。このモデルの中に、データベースにアクセスするための機能が用意されています。今回使っている「find」は、引数に指定したデータを取り出すためのものです。"all"と指定することで、全データを取り出すことができます。

今回は、取り出したデータをそのまま"datas"という名前でビューに渡しています。データの表示は、ビュー側で処理を用意しようというわけです。


(by. SYODA-Tuyano.)

※リストが表示されない場合

AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。

<?php

class MydatasController extends AppController {
	
	public $name = "mydatas";  // なくてもいい
	public $uses = "Mydata";   // なくてもいい
	public $autoRender = true; // なくてもいい
	public $layout = "sample";
	public $autoLayout = true; // なくてもいい	
	
	function index(){
		$this->set("page_title","Sample Page");
		$this->set("content_header","Sample Page.");
		$this->set("content_footer","copyright SYODA-Tuyano. 2010.");

		$datas = $this->Mydata->find("all");
		$this->set("datas",$datas);
	}

}



   

記事のリストに戻る



PC Site G+ mail