h2ospace

[CakePHP Tips] Routsでパラメータを取得する

2010-11-30 20:00:30

CakePHPは、基本的にはファイル名などに厳格なルールがあるため、そのままではURLが非常に長く、複雑になってしまいます。

例)

http://example.com/controller/action/param1/param2/

これを、短くするのが「/app/config/」フォルダにある「routes.php」です。
基本的な使い方は、マニュアルにも記載があるのですが、結構難解でパラメータをURLを埋めこんで次のようにする方法が分かりにくいです。

例)

http://exmaple.com/sample1_1.html

これには「:」から始まるパラメータを利用します。例えば、Routesに次のように記述します。

Router::connect('/sample:id_:page.html', array('controller'=>'sample', 'action'=>'index'), array('id'=>'[0-9]+'));

これで先のURLを呼び出すと、「sample」コントローラーの「index」アクションに、「$this->params」で引き渡されます。最初の数字が「$this->params['id']」、次の数字が「$this->params['page']」と受け取ることができます。

また、connectメソッドの最後のパラメータではルールを設定することもできます。ここでは、idのパラメータに正規表現を設定して数字だけを許すようにしています。このようにすることで、わざわざパラメータの検査をしなくても、routesの設定だけで検査を不正をはじくことができます。便利です。

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 新着記事
  • 特集
  • ブログ