CakePHPでGETでパラメータを渡してActionを呼び出す場合、名前付きかそうでないかのパラメータでControllerでのパラメータの受け取り方法が違う。
まぁ公式サイトのドキュメントにも書いてあるのだけどね。
名前付きのパラメータ :: Routesの設定 :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2 Collection :: The Cookbook
パラメータ名を付けない場合はコントローラの関数の引数に順にセットされるけど、パラメータ付きの場合は関数の引数ではなく、$this->passedArgs['']を使え、と。
URL: /donations/view/recent/2001 Mapping: DonationsController->view('recent', '2001'); URL: /contents/view/chapter:models/section:associations Mapping: ContentsController->view(); $this->passedArgs['chapter'] = 'models'; $this->passedArgs['section'] = 'associations';
これに気づかずに、しばらく値が受け取れなくて悩んでしまった。普通にHTMLヘルパーで
$html->link("リンク", array("action"=>"detail", "asin"=>$item['ASIN']));
なんてやると、普通に名前付きパラメータになるしね。
コメント