ここではCakePHP2.xでのURLルーティングする方法を解説しています。
記述場所
/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'];
}
}