验证Yii2中数据库的唯一值
我正在尝试验证电子邮件值是否为唯一值。像这样做验证Yii2中数据库的唯一值,yii2,Yii2,我正在尝试验证电子邮件值是否为唯一值。像这样做 [['HRMS_candidateEmail'],'unique'], 但它不工作,插入语句使用yii\validators\UniqueValidator,如下所示 模型 我假设您的观点是register.php。所以 register.php(视图) 1) 删除使用yii\bootstrap\ActiveForm(如果存在) 2) 添加使用yii\widgets\ActiveForm use yii\web\Response; use yii
[['HRMS_candidateEmail'],'unique'],
但它不工作,插入语句使用yii\validators\UniqueValidator代码>,如下所示
模型
我假设您的观点是register.php
。所以
register.php(视图)
1) 删除使用yii\bootstrap\ActiveForm代码>(如果存在)
2) 添加使用yii\widgets\ActiveForm代码>
use yii\web\Response;
use yii\widgets\ActiveForm;
.
.
.
public function actionRegister() {
$model = new Candidate();
//Add This For Ajax Email Exist Validation
if(Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())){
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
else if ($model->load(Yii::$app->request->post())) {
.
// Your code
.
.
}
}
3) 在该字段中添加'enableAjaxValidation'=>true
(验证它的位置,如下所示)
关于“不工作”部分,请再具体一点。有错误吗?@tarleb没有错误,它接受之前插入的值。表单中的其他验证是否按预期工作?确保数据库中有候选人电子邮件的唯一索引。@NanaPartykar完成:Jai Maharashtra。
<?= $form->field($model, 'HRMS_candidateEmail')->textInput(['maxlength' => true,'class'=>'form-control input-sm','placeholder'=>'Enter email of candidate']) ?>
<?= $form->field($model, 'HRMS_candidateEmail',['enableAjaxValidation' => true])->textInput(['maxlength' => true,'class'=>'form-control input-sm','placeholder'=>'Enter email of candidate']) ?>
use yii\web\Response;
use yii\widgets\ActiveForm;
.
.
.
public function actionRegister() {
$model = new Candidate();
//Add This For Ajax Email Exist Validation
if(Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())){
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
else if ($model->load(Yii::$app->request->post())) {
.
// Your code
.
.
}
}