在 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.'],