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

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で取得したデータが設定されます。