CakePHP Routerで簡単なURLチェックをする場合

ようやく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のチェックが簡単に行えるようになります。

カテゴリー: CakePHP   パーマリンク

コメントをどうぞ

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

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>