在 Yii2 中验证数据库中的唯一值
如果在文本框中输入现有值,则很少有人会出现关于错误消息不显示的问题。
所以,例如我不允许用户输入现有的电子邮件。
signup.php
(你想在没有现有电子邮件 ID 的情况下注册新用户的页面)
- 删除
use yii\bootstrap\ActiveForm;
(如果有) - 添加
use yii\widgets\ActiveForm;
- 添加
'enableAjaxValidation' => true
(在该字段中,你希望停止用户输入现有的电子邮件 ID。)
<?php
use yii\bootstrap\ActiveForm;
use yii\widgets\ActiveForm;
?>
<?= $form->field($modelUser, 'email',['enableAjaxValidation' => true])
->textInput(['class'=>'form-control','placeholder'=>'Email']); ?>
调节器
在 use yii\web\Response;use yii\widgets\ActiveForm;
上添加这些行
<?php
use yii\web\Response;
use yii\widgets\ActiveForm;
.
.// Your code
.
public function actionSignup() {
$modelUser = new User();
//Add This For Ajax Email Exist Validation
if(Yii::$app->request->isAjax && $modelUser->load(Yii::$app->request->post())){
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($modelUser);
}
else if ($model->load(Yii::$app->request->post())) {
}
}
?>
模型
[['email'],'unique','message'=>'Email already exist. Please try another one.'],