在不刷新页面的情况下显示验证错误

时间:2021-01-07 09:52:11

标签: mysql validation yii2

有什么办法可以在没有重定向或刷新的情况下在 Yii2 中显示验证错误?

这是我执行登录操作的默认控制器代码,当输入的数据与数据库中的数据不匹配时,我想突出显示文本字段,对数据库进行简单的验证。

public function actionLogin()
    {
        /** @var \amnah\yii2\user\models\forms\LoginForm $model */
        $model = $this->module->model("LoginForm");
    
        // load post data and login
        $post = Yii::$app->request->post();
        if ($model->load($post) && $model->validate()) {
            $returnUrl = $this->performLogin(
                $model->getUser(), $model->rememberMe
            );
            return $this->redirect($returnUrl);
        }
        
        return $this->render('login', compact("model"));
}

1 个答案:

答案 0 :(得分:0)

你可以这样做:

表单登录

<?php $form = ActiveForm::begin([
                            'validationUrl' => Url::toRoute(['site/login-validate']),
                            'action' => Url::toRoute(['site/login']),
                            'options' => [
                                    'class' => 'form login'
                            ],
                    ]); ?>

站点控制器

public function actionLoginValidate(){
      if(Yii::$app->request->isAjax){
            $model = new Login();
            if($model->load(Yii::$app->request->post())){
                Yii::$app->response->format = Response::FORMAT_JSON;
                return ActiveForm::validate($model);
            }
      }
     throw new BadRequestHttpException("This action is not allowed.");
}
相关问题