
注册时不用提交就验证用户名、邮箱等是否已将存在,用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' => '邮箱已存在.'],
...
貌似三者缺一都会失效,网上的教材要么只给第二步,要么只提供第三步,着实让新手有点困惑。
为此,我总结研究了下,希望可以帮助对此有困惑的人



2021年11月23日 下午4:06 沙发
非常好。我喜欢它