CakePHP : コントローラーの作成

メモ:  Category:php

MVC(Model View Controller)の「C」にあたるコントローラーを作成します。

コントローラーは、ビューから(今回の場合、ブラウザから)の入力を受けモデルへの処理を依頼したり ビューによる表示を依頼するといった制御を受け持ちます。

参考:「MVC モデルとは何ですか・・・」など

CakePHP の規約

コントローラーの命名規約は次のようになっています。

  • クラス名を複数形とし「Controller」を末尾に付加する。(例:ForumsController)
  • クラス名は大文字で始める。
  • ファイル名は、名前と controller の間にアンダースコアを入れて次のようにつけます。

クラスの例

<?php
class ForumsController extends AppController
{
    var $name = 'Forums';
}
?>

ファイル名の例

forums_controller.php

コントローラーの作成

CakePHP では、リクエストされる URL にコントローラーおよび処理(アクション)を指定します。

http://*****/コントローラー名/アクション名(メソッド)/

URL に指定されたコントローラーとアクションは、mod_rewrite によって変換され指定されたコントローラー のインスタンスを作成し、メソッド(アクション)を呼び出します。

【関連:mod_rewrite の設定

例えば、ForumsController クラスの index メソッドを実行するには、「http://www.hoge.net/forums/index」のように リクエストします。ForumsController クラスのメソッドに必要なアクションを追加していくことでさまざまな処理に 対応していきます。

また、「http://www.hoge.net/forums」のようにアクション名(メソッド)を省略するとデフォルトで index(メソッド)が呼ばれます。

ここでは、Forums コントロールを作成しメソッドに index を実装します。使用するモデルは、前回作成した Category を指定しています。

<?php

class ForumsController extends AppController
{
    var $name = 'Forums';
    var $uses = array('Category');

    function index()
    {
        $this->set('categories',$this->Category->findAll());
    }
}

?>

CakePHP の命名規約に従って AppController を派生した、ForumsController クラスを作成します。

var $usesは、使用するモデルを設定します。$uses を指定しない場合、コントロール名の単数形のモデルが自動的に使用されます。 また、複数のモデルを指定する場合、配列でモデルを指定する必要があります。

ここでは、今後 post など別のモデルが増えそうなので配列に設定しています。

次にアクションにあたるメソッドを実装します。index メソッドでは、ビューにデータを渡せるよう Category モデルを使って データベースからデータを取得するよう実装しています。

上記例の場合、「categories」という変数に Category で取得したデータが設定されます。

bluenote by BBB