我已登录此操作:
// if it is ajax validation request
if(isset($_REQUEST['ajax']) && isset($_REQUEST['users']))
{
//echo CActiveForm::validate($model);
$model->attributes=$_REQUEST['users'];
$result = array();
if($model->validate() && $model->login())
{
// MONGO - START
DPoints::app()->dailyLogin(Yii::app()->user->id);
// MONGO - END
$result['status'] = 'success';
$user = users::model()->findByPk(Yii::app()->user->id);
if($user->role == 'admin')
{
$result['url'] = Yii::app()->createUrl('/admin/questions');
}
else
{
$result['url'] = Yii::app()->createUrl('/user/dashboard');
}
}
else
{
$result['status'] = 'failed';
$errors = $model->getErrors();
$result['errormessage'] = $errors;
}
echo json_encode($result);
// $this->redirect('http://www.teddfel.hu/question/igaz-hogy-ebben-az-evben-nem-lesz-igazi-nyarunk_11289');
return;
}
我已经读过某个地方,我应该{i} $this->redirect(Yii::app()->user->returnUrl);
来重定向用户。但在我的示例中,我应该在哪里使用该重定向用户?登录完成后,我想重定向用户。
答案 0 :(得分:0)
根据你的例子,你应该在if($model->validate() && $model->login())
之后的任何地方重定向,如果你不想要的话,那就是非ajax。
因为这意味着用户已成功登录。
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
{
$this->redirect('http://www.google.com');
}
}
答案 1 :(得分:0)
如果是AJAX请求,您将无法强制从控制器重定向。相反,您需要使用相同的AJAX处理响应。例如:
$.ajax({
// implementation goes here
success: function(response) {
var result = $.parseJSON(response);
if (result.status === 'success') {
document.location.href = result.url;
}
}
})
而且,Yii为您提供了更好的方法来检查它是否是一个AJAX请求:
if (Yii::app()->request->isAjaxRequest) {}