ようやくRouterの使い方が分かってきたつもりです。
/foo/edit/5 のようなよくある更新用のURLの場合、
routes.phpに何も書かなくても、foo_controller.phpを
class FooController extends AppController {
function edit($id=null) {
}
}
としてしまえば、fooコントローラのeditアクションに$id=5が引数として値が入ります。
ただ、/foo/edit/ や /foo/edit/bar などといった可能性もありうるので$idのチェックが必要となります。
そこで、routes.phpに
Router::connect('/foo/edit/:foo_id',array('controller'=>'devices','action'=>'detail'),array('foo_id'=>'[0-9]+'));
と記述することで、foo_controller.phpは
class FooController extends AppController {
function edit() {
if(isset($this->params['foo_id'])) {
} else {
}
}
}
として、$this->params['foo_id']には正規表現の値しかセットされなくなり、
URLのチェックが簡単に行えるようになります。















