ここではCakePHP2.xのControllerの簡単な解説をしていきます。
サンプルソース
<?php class IndexController extends AppController { // モデル public $uses = array('User'); // コンポーネント public $components = array('Cookie'); public function beforeFilter() { parent::beforeFilter(); $this->set('title_for_layout', 'タイトル'); $this->setCss(); $this->setJavascript(); } public function index() { // post判定 if ($this->request->is('post')) { // POST値 <input name="post" type="text"> $post = $this->request->data['post']; // GET値 http://www.example.com/index?get=hoge $hoge = $this->request->query['get']; // URLから渡されたデータ http://www.example.com/index/param1/param2 $param1 = $this->request->pass[0]; $param2 = $this->request->pass[1]; // モデルの使用 $this->ModelName->functionName(); $this->User->getAll(); } // 読み込むレイアウトの指定 app/View/Layouts/以下を指定 $this->layout = 'admin/indexFrame'; // 読み込むViewの指定 app/View以下を指定 $this->render('/admin/index'); } /** * ページ固有のCSS設定 */ private function setCss() { $arrCss = array(); // app/webroot/css/以下を指定 array_push($arrCss, 'admin/hage'); array_push($arrCss, 'admin/foo'); $this->set('arrCss', $arrCss); } /** * ページ固有のJavascript設定 */ private function setJavascript() { $arrJavascript = array(); // app/webroot/js/以下を指定 array_push($arrJavascript, 'admin/Index'); $this->set('arrJavascript', $arrJavascript); } }
解説
public $uses = array(‘User’); (5行目)
使用するモデル名を配列で指定してください。
public $components = array(‘Cookie’); (7行目)
使用するコンポーネントを配列で指定してください。
※Sessionコンポーネントは指定しなくても読み込まれます。
public function beforeFilter() {} (9行目)
一番最初に実行されるブロックです。
parent::beforeFilter(); (10行目)
親クラスのpublic function beforeFilter() {}を実行する場合parent::beforeFilter();をコールしてください。
$this->set(‘title_for_layout’, ‘タイトル’); (11行目)
Viewファイルで使用する変数を設定します。
private function setCss() {} private function setJavascript() {} (42、53行目)
私の自作メソッドなので規約などはありません。
if ($this->request->is(‘post’)) {} (18行目)
POSTされたデータがあればtrueになります。
$post = $this->request->data[‘post’]; (20行目)
$_POST[‘post’]と同じ使い方です。
$hoge = $this->request->query[‘get’]; (23行目)
$_GET[‘get’]と同じ使い方です。
$param1 = $this->request->pass[0]; (26、27行目)
URLから渡されたデータ
URL/区切りで$this->request->pass[0]; 1,2,3・・・と格納されます。
$this->User->getAll(); (30行目)
コントローラー内public $uses = array(‘User’);で指定したモデル名->function名を使用します。
今回の例ではModelクラスにgetAllメソッドがあると仮定しています。
$this->layout = ‘admin/indexFrame’; (34行目)
Layoutファイル読み込み
/app/View/Layouts/から指定してください。
$this->render(‘/admin/index’); (36行目)
Viewファイル読み込み
/app/Viewから指定してください。