February 25, 2013

[CakePHP]コントローラに引数として記号を渡す


また備忘録的cakePHPメモ。

商品一覧があって、そこから商品詳細に飛びたい。

カテゴリ = car 
商品ID = 25
カテゴリ = car/subaru
商品ID = 32

変数に「/」があるパターンとないパターンが混在している場合。
1件目は詳細画面へのリンクを http://localhost/index/detail/car/25 として、コントローラ側で function detail($category = null,$sid = null) … で $category = "car"; $sid = "25"; と取得可能。

2件目も同様にリンクをはると、 http://localhost/index/detail/car/subaru/25 先ほどのfunctionでは当然ながら第2引数として「car」を取得してしまう。

http://localhost/index/detail/car%2Fsubaru/25 として、カテゴリの部分にエンコードかけてもダメ(404になった)。

だから、各コードにエンコードかけてGETパラメータで渡すことにした。
http://localhost/index/detail/?category=car%2Fsubaru&sid=32

コントローラ側で
function detail() …  
 if($this->params['url']['category']){ $cat = $this->params['url']['category']; }
 if($this->params['url']['sid']){ $sid = $this->params['url']['sid']; }
とすれば1件目も2件目もパラメータを取得可能で、 あとは適宜変更してDB等に問い合わせればOK。



xseraarcy at 22:00│Comments(0)TrackBack(0) 技術的&べんり帳 

トラックバックURL

コメントする

名前
 
  絵文字