CakePHP2.x ルーティング Router::connect

ここではCakePHP2.xでのURLルーティングする方法を解説しています。

cakephp

記述場所

/app/Config/routes.php

CakePlugin::routes();

以前に記述してください。

PageControllerのアクションメソッドdisplayの場合

Router::connect('/admin/index', array('controller' => 'Page', 'action' => 'display'));

/admin/indexにアクセスするとPageControllerのdisplayが呼ばれます。

PageControllerのアクションメソッドindexの場合

Router::connect('/admin/index', array('controller' => 'Page'));

/admin/indexにアクセスするとPageControllerのindexが呼ばれます。
アクションメソッドがindexの場合は省略できます。

PageControllerのアクションメソッドdisplayにパラメータを渡す場合

Router::connect('/admin/index/:id', array('controller' => 'Page', 'action' => 'display', array('id' => '\d+')));

/admin/index/1にアクセスするとPageControllerのdisplayが呼ばれます。
\d+の箇所は正規表現で指定できます。
このルーティングでは/admin/index/aaaなど数字以外のパラメータはエラーになります。

パラメータの受け取り

<?php

    class PageController extends AppController {
        public function display() {
            $id = $this->request->params['id'];
        }
    }

パラメータが複数の場合

Router::connect('/admin/:lang/article/:id', array('controller' => 'Page', array('lang' => 'jp|en|ch', 'id' => '[0-9]+')));

/admin/jp/article/1
/admin/en/article/2
/admin/ch/article/3
にアクセスした場合
PageControllerのアクションメソッドindexが呼ばれます。

パラメータの受け取り

<?php

    class PageController extends AppController {
        public function index() {
            $lang = $this->request->params['lang'];
            $id = $this->request->params['id'];
        }
    }

コメントを残す

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

*