yii2表单验证唯一性问题解决

2019年1月15日12:10:00 发表评论 52 次浏览

yii2表单验证唯一性问题解决

注册时不用提交就验证用户名、邮箱等是否已将存在,用Ajax实现
首先,先在Form表中开启Ajax

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

其次,再_对应的_Controller加入一段Ajax验证的代码

    ...
 if ($model->load(Yii::$app->request->post())) {
         if (Yii::$app->request->isAjax) {
             Yii::$app->response->format = Response::FORMAT_JSON;
             return ActiveForm::validate($model);
         } //ajax提交过来的会直接进行验证
    ...

最后,再对应的models里面增加验证的rules

    ...
 ['username', 'unique', 'targetClass' => '\backend\models\User', 'message' => '用户名已存在.'],
 //targetClass目标模型类(这个不能照抄,要结合你项目注册新用户时的模型类)
 ['email', 'unique', 'targetClass' => '\backend\models\User', 'message' => '邮箱已存在.'],
    ...

貌似三者缺一都会失效,网上的教材要么只给第二步,要么只提供第三步,着实让新手有点困惑。

为此,我总结研究了下,希望可以帮助对此有困惑的人

阿修罗

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: