リダイレクトにアクション名だけを指定してたら、うまくURLを作ってくれなかった
ショーンホワイトの金メダルライディングをみて癒されました。次元が違う、一番好きだったのは540のグラブで足を突き上げてるやつ。高く飛んで、ゆっくり余裕で回転してるほうが、くるくる回ってるより好きです。素晴らしいルーティーン、そして悲しいルーティング。。。今日はroutesとの格闘が続いております。
Cake1.2.6
リダイレクトで、ルーティングを色々と設定してる時に、そのルーティング通りのURLにならなかったので、その対応。
routes.phpはこうなってて、
Router::connect('/mobile/users/:action', array('controller' => 'user_mobiles', ));
/mobile/users/hogeの画面から、リダイレクトで/mobile/users/hoge2に遷移させようとしたとき、user_mobilesコントローラで
$this->redirect('hoge2');
としたら、/user_mobiles/hoge2にリダイレクトされてしまった。。。
結局、下記のようにリダイレクトを修正して対応。
$this->redirect(array('action' => 'hoge2'));
リダイレクト内で、Router::url()を呼び出してるので、それで問題が起こらない形に持っていくのが良いみたい。他のコントローラへのリダイレクトなら、
$this->redirect(array('controller' => 'others', 'action' => 'fuga'));
こんな感じで指定。
参考
http://book.cakephp.org/view/425/redirect
http://api.cakephp.org/view_source/controller/#line-536