ajax で処理された CActiveForm のロジックの流れを正確に理解するのに苦労しています。
環境:
ログインと登録にajaxを使用しています。ログインが機能し、ログインに成功すると、ユーザーはホームページにリダイレクトされます。登録は機能しますが、登録が成功した後、ユーザーをホームページにリダイレクトしません。そこに座っているだけです。確かにそれはちょっとうまくいきますが、舞台裏で何をしているのか正確にはわかりません。
コントローラーコード: (コントローラー/モデル/ビューコードは、ログインアクションと登録アクションでほぼ同じです)
public function actionLogin()
{
$model = new LoginForm;
// if it is ajax validation request
if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
echo CActiveForm::validate($model);
app()->end();
}
// render and nonajax handling here...
}
public function actionRegister() {
$model = new RegisterForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax'] === 'register-form')
{
echo CActiveForm::validate($model);
app()->end();
}
// render and nonajax handling here...
}
質問:
コードが最終的にどこに行くのかを確認するために出力行のデバッグを試みましたが、ajax リクエストの場合、コードはapp()->end();
. 登録アクションではなく、ログイン アクションによってリダイレクトされるのはなぜですか? リダイレクト先を指定するコードはどこにありますか? app()->end();
コードについては、yii がアプリの終了に加えて「onEndRequest」イベントを発生させることはわかっています。これはリダイレクトのコードがある場所ですか? 保護されたフォルダーで「onEndRequest」というテキストを含むものを探しましたが、その存在を示すものは見つかりませんでした。
編集:
また、登録後にメールを送信したいのですが、この ajax 化された CActiveForm のロジックの流れを正しく理解していないと送信できません。そのコードをどこに配置しますか? (私はそれをコーディングする方法を知っていますが、どこに置くべきかわかりません)