前提・実現したいこと
①メインのシステムのコントローラーの基底側に共通のログインチェックがある
②ログインチェックが走り、ログイン状態がチェックできない場合はログイン画面にリダイレクトしている
このような処理がある前提で、
modal内で入力、登録するような処理の中で、ログインチェック後、ログイン画面にリダイレクトしたいです。
このmodalが、ajax(これも①②の基底クラスを継承しているコントローラで記述している)でtplを返却してできている画面で、
ajax(コントローラー)でログインチェックをするとmodal内にログイン画面が表示されるようになってしまいます。
これをmodal内ではなく、ログイン画面にそのままリダイレクトさせたいのですが、
どうしてもmodal内に表示されてしまいます。
(コントローラ側で返却するviewがログイン画面になり、呼び出し元(返却viewを埋めたい場所)に埋め込まれてしまう。
よく考えたら当たり前の事なのですが)
全ての処理を中断し、元画面ごとログイン画面にリダイレクトするには
どのようにすればよいでしょうか?
埋め込み元 <div class="modal-content" id="hogehogebox" > </div> 埋め込むmodal(hogehoge.tpl) <div class="modal "role="dialog" id="hogehogedialog"> </div>
$(function() { // ポップアップ $("#btn_message").click(function() { // postデータ形成 var postData = {}; postData['hogehoge'] = hoge; $.ajax({ type: "POST", url: "/hogehoge/hagehage", data: postData, dataType: 'html', }).done(function(html) { var $body = $("#hogehogebox"); $body.empty(); $body.append(html); // 表示 $("#hogehogedialog").modal(); }).fail(function() { alert("ここにエラー"); }); }); });
phpのコントローラ側(ajaxのアクション本体)このコントローラの基底クラスのinitでログインチェックをして ログイン状態でない場合はログイン画面にリダイレクトの処理が入っている。 public function hagehageAction() { ここでなんやかんやデータ取得してこねこね smartyでデータつめつめ // tpl返却 $this->view->display( 'パス/hogehoge.tpl' ); }
回答2件
あなたの回答
tips
プレビュー