我无法准确理解 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”的任何内容,但找不到任何存在的迹象。
编辑:
我也想在注册后发送一封电子邮件,但如果没有正确理解这个 ajaxified CActiveForm 的逻辑流程,我就无法这样做。我会在哪里放置该代码?(我知道如何编码,我只是不知道放在哪里)