在 Yii2 中驗證資料庫中的唯一值

如果在文字框中輸入現有值,則很少有人會出現關於錯誤訊息不顯示的問題。

所以,例如我不允許使用者輸入現有的電子郵件

signup.php

(你想在沒有現有電子郵件 ID 的情況下注冊新使用者的頁面)

  1. 刪除 use yii\bootstrap\ActiveForm;(如果有)
  2. 新增 use yii\widgets\ActiveForm;
  3. 新增'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.'],