2015-12-10 6 views
0

Я использую bootstrap modal для входа. Это мой код контроллераПроблема в Bootstrap Modal

public function actionSignin() 
     { 
      $this->layout= "main"; 
      $model = new LoginForm(); 

      if (isset($_POST[ 'LoginForm' ])) 
      { 

       if ($model->load(Yii::$app->request->post()) && $model->login()) 
       { 
        $session = Yii::$app->session; 
        $session['username'] = $model->user->first_name; 
        $session['userid'] = $model->user->id; 

        return $this->redirect([ '/site/home' ]); 
       } 
       else 
       { 

        Yii::$app->getSession()->setFlash('error', 'Incorrect Email or Password or both'); 
        return $this->renderAjax('signin', [ 'model' => $model ]); 
       } 
      } 

      else 
      { 
       return $this->renderAjax('signin', [ 'model' => $model ]); 
      } 
     } 

, когда пользователи нажимают на следующую ссылку Войти форму поп-х до

echo Html::a(Yii::t('app', ' {modelClass}', ['modelClass' => 'SignIn', 
         ]), [ 'account/signin' ], [ 'class' => 'btn btn-link fa fa-sign-in btn-primary sign'] 
         ); 

когда пользователь ввести правильное имя пользователя и пароль пользователя перенаправляется на сайт/дома, как указано в коде. Но когда пользователь вводит неправильное имя пользователя или пароль, модальный должен снова всплывать, но это не так. Вместо этого я получаю страницу с белым фоном (без макета) с полями для ввода имени пользователя и пароля. Я не могу видеть это в модальном всплывающем меню, почему так?

login form with modal popup

login form when user enters incorrect details

+1

Перейти к этому [ссылка] (HTTP: //stackoverflow.com/questions/23927579/how-can-i-sh вл-The-умолчанию-Логин-страницы, как покадрово-всплывающее окно-в-yii2/25641678 # 25641678). Это может помочь! – mohit

ответ

0

добавить в ваш _form как:

<?php $form = ActiveForm::begin(['enableAjaxValidation' => true,]); ?> 

Добавьте этот код в controller файле:

public function actionSignin() 
{ 
     $this->layout= "main"; 
     $model = new LoginForm(); 

     if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) 
     { 
      Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; 
      return ActiveForm::validate($model); 
     } 

     if ($model->load(Yii::$app->request->post()) && $model->login()) 
     { 
      $session = Yii::$app->session; 
      $session['username'] = $model->user->first_name; 
      $session['userid'] = $model->user->id; 

      return $this->redirect([ '/site/home' ]); 
     } 
     else 
     { 
      Yii::$app->getSession()->setFlash('error', 'Incorrect Email or Password or both'); 
      return $this->renderAjax('signin', [ 'model' => $model ]); 
     } 
     return $this->renderAjax('signin', [ 'model' => $model ]); 
}