CakePHP2.x Controller作成

ここではCakePHP2.xのControllerの簡単な解説をしていきます。

cakephp

サンプルソース

<?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から指定してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください