libro
www.tuyano.com
初心者のためのCakePHP 1.3 プログラミング入門

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

作成:2010-02-18 11:40
更新:2010-05-10 19:27

■コントローラーを作る

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

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

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

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

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

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

※プログラムリストが表示されない場合

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);
	}

}
※関連コンテンツ

「初心者のためのCakePHP 1.3 プログラミング入門」に戻る