我有以下规则的电子邮件是唯一的模态
[['email'], 'unique'],
我不使用邮箱提交表单。问题是,我得到的所有规则验证消息,除了唯一的规则。那么,如何使唯一规则在客户端工作呢?我错过了什么?请帮
taor4pac1#
唯一的办法就是在客户端enableAjaxValidation
enableAjaxValidation
Here is doc about it要为单个输入字段启用AJAX验证,请将该字段的enableAjaxValidation属性配置为true并指定唯一的表单ID:
use yii\widgets\ActiveForm; $form = ActiveForm::begin([ 'id' => 'registration-form', ]); echo $form->field($model, 'username', ['enableAjaxValidation' => true]); // ... ActiveForm::end();
您还需要准备服务器,以便它可以处理AJAX验证请求。这可以通过控制器操作中的如下代码片段来实现:
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); }
yxyvkwin2#
不幸的是,这必须来自DB的ActiveRecordSet的更新,当它意识到这个字段是唯一的。最简单的方法是检查($model->save())是否为true,否则返回/呈现回表单,您将看到一条框架消息,表明特定字段已被占用。
($model->save())
2条答案
按热度按时间taor4pac1#
唯一的办法就是在客户端
enableAjaxValidation
Here is doc about it
要为单个输入字段启用AJAX验证,请将该字段的enableAjaxValidation属性配置为true并指定唯一的表单ID:
您还需要准备服务器,以便它可以处理AJAX验证请求。这可以通过控制器操作中的如下代码片段来实现:
yxyvkwin2#
不幸的是,这必须来自DB的ActiveRecordSet的更新,当它意识到这个字段是唯一的。最简单的方法是检查
($model->save())
是否为true,否则返回/呈现回表单,您将看到一条框架消息,表明特定字段已被占用。