| 7件目(121件中) |

Ajaxでポストし、処理後redirectするとパラメータが減る

固定リンク:#0000000097   投稿者:ZiSTA 日時:2009-11-24 22:14:48   コメント( 0

AjaxでポストされたものをUsersコントローラで処理をしてGroupsコントローラにリダイレクトさせたいケースです。UsersコントローラではRequestHandlerコンポーネントを使用し、リダイレクト先のURLはCakePHPの配列形式で指定しています。CakePHP 1.2finalです。


redirect部分が期待通りに動きませんでした。リダイレクト時に最後の$parent_idが消えてしまいます。RequestHandlerコンポーネントを使用しないと問題はありません。あるいはURLを文字列で指定すると問題ありません。

class AcosController extends AppController {
	var $components = array('RequestHandler');//これを使わないと問題ない

function permit(){
//問題になるコード not works
    $this->redirect(array('controller'=>'groups','action'=>'index',$parent_id));
}

function permit2(){
//問題のないコード works
    $this->redirect('groups/index/'.$parent_id));
}
}


RequestHandlerがAjaxと判断して処理方法をrequestActionに切り替えているようなのですが、、、配列形式のURLと相性が悪かったようです。


とりあえずURLを文字列に変換する方法で対処しました。(その後却下)

//対策したコード works
$this->redirect(Router::normalize(array('controller'=>'groups','action'=>'index',$parent_id)));


上のコードは却下し元に戻し、AppControllerでredirectをオーバーライドする事にしました。

    function redirect($url, $status=null, $exit=true){
        if($this->RequestHandler->isAjax()){
            $url = Router::normalize($url);
        }
        parent::redirect($url, $status, $exit);
    }
 

コメント

| 7件目(121件中) |
↑ ページトップ