mysql - 在不刷新页面的情况下显示验证错误
问题描述
有什么方法可以在 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"));
}
解决方案
你可以这样做:
表单登录
<?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.");
}
推荐阅读
- java - Java中使用大写字母和小写字母实现Autocomplete
- r - 网站代码给出错误
- php - 消息:未定义变量:类别
- python - 如何让计时器更高效
- go - 去变量结构重新分配错误?
- vba - 通过 VBA 改进组合 txt 代码
- laravel - 登录和注销后重定向
- javascript - How do I trigger a JavaScript function from a select element when the select element no longer exists in a normal manner?
- php - filemtime () 不适用于我的脚本,但适用于我复制示例代码的脚本
- python - 使用 mongoexport 一次访问所有嵌套字段