[CakePHP]URLからパラメータを受け取る
cake記法?で書かれたURLからパラメータを取得するメモ。
コントローラーのみで制御
cakephpでのURLの基本は以下。
コントローラー名/アクション名
これにパラメータをつけたければ、その後ろに並べるのみ。
コントローラー名/アクション名/パラメータ1/パラメータ2
このパラメータを取得する方法は以下。
//URL - ctrl/act/param1/param2
$this->params['pass'][0]; //param1
$this->params['pass'][1]; //param2
で、指定の名前を付けたい場合は、以下のように。
コントローラー名/アクション/パラメータ名1:パラメータ/パラメータ名2:パラメータ
//URL - ctrl/act/param1:hoge/param2:fuga
$this->params['named']['param1'];
$this->params['named']['param2'];
で、View側でこのリンクを作る方法は以下。
1 2 3 4 5 |
|
これで上記の、/ctrl/act/param1:hoge
が生成される
ルーティング
このままだとURLが冗長になるので、ルーティングを設定して、スッキリさせる。
さらに予めパラメータ名を指定してやる。
ルーティング
Router::connect('/ctrl/act/:param1', array('controller' => 'ctrl', 'action' => 'act'));
こうすると、上記で記述したリンクを貼ると、以下のURLが生成される。
/ctrl/act/hoge
これを取得するには以下。
$this->params['param1']
これの方が見た目も取得方法もすっきりしててよさげ。