Как проверить электронную почту и электронную почту уже существует или не проверять в Yii Framework?

Как проверить электронную почту с помощью кода функции проверки правильности Yii Model. Также как проверять электронную почту существует или нет, используя функцию правил проверки модели в Yii.

Вы можете установить валидацию модели, как показано ниже.

public function rules() { // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( //First parameter is your field name of table which has email value array('email', 'email','message'=>"The email isn't correct"), array('email', 'unique','message'=>'Email already exists!'), ); } 

Ссылка на Yii для получения дополнительной информации: http://www.yiiframework.com/wiki/56/

Вы можете создать свой собственный метод проверки, чтобы выполнить свое требование.

Создайте функцию в классе модели:

 public function uniqueEmail($attribute, $params) { // Set $emailExist variable true or false by using your custom query on checking in database table if email exist or not. // You can user $this->{$attribute} to get attribute value. $emailExist = true; if($emailExist) $this->addError('email','Email already exists'); } 

Пользователь этот метод проверки в правилах:

 array('email', 'uniqueEmail','message'=>'Email already exists!'), 

Пользовательская проверка, короткий и сладкий код. попробуйте это, он отлично работает –

 public function rules() { return array( array('email, first_name, last_name, password, repeat_password', 'required'), array('email', 'email','message'=>"The email isn't correct"), array('email', 'uniqueEmail'), ); } 

напишите эту пользовательскую функцию в ту же модель –

 public function uniqueEmail($attribute, $params) { if($user = User::model()->exists('email=:email',array('email'=>$this->email))) $this->addError($attribute, 'Email already exists!'); } 

Для Yii2 я использовал следующее в модели под названием «Регистр», которая будет использовать пользовательский класс.

 public function rules() { return [ ['Email', 'filter', 'filter' => 'trim'], ['Email', 'required'], ['Email', 'email'], ['Email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'], ]; } 

Вам нужно использовать targetClass и поместить Namepace для пользователя класса

Вы можете легко найти, что либо электронная почта уже присутствует в вашем db, либо нет, определяя правило.

Вот правило.

 array('xxx', 'unique', 'className' => 'SomeClass', 'attributeName' => 'SomeAttribute'), 

Пример.

 public function rules() { return array( ... array('email', 'unique', 'className' => 'User', 'attributeName' => 'email', 'message'=>'This Email is already in use'), ... ); } 

Здесь я хочу поставить проверку на электронную почту, которая уникальна, мое имя класса модели – User, attributeName – это имя поля таблицы, то есть электронная почта, и если электронная почта уже присутствует в вашей таблице, тогда отобразите сообщение.

Если он дает ошибку, вы можете изменить таблицу и создать уникальное поле электронной почты.

Пользователь ALTER TABLE ADD UNIQUE (электронная почта)

Затем проверьте.

другие проверки электронной почты приведены ниже. который я считаю полным набором проверки подлинности электронной почты.

 public function rules() { return array( ... array('email', 'required'), array('email', 'length', 'max'=>200), array('email', 'email', 'message'=>'Email is not valid'), array('email', 'unique', 'className' => 'User', 'attributeName' => 'email', 'message'=>'This Email is already in use'), ... ); } 

Вот и все. благодаря

Следуйте нескольким изменениям, как показано ниже: следуйте своим файлам в соответствии с вашим модулем, который вы использовали.

Перейти к моделям -> open-> Users.php -> Изменить строку, как указано ниже.

  public function rules() { return [ [['User_Email'], 'unique'], [['User_Mobile'],'unique'], ]; } 

Теперь перейдите в views-> users -> Open _form.php-> напишите код, как указано ниже

 <div class="users-form"> <?php $form = ActiveForm::begin([ 'id' => $model->formName(), 'enableAjaxValidation' => true, ]); ?> <?= $form->field($model, 'User_Email')->textInput(['maxlength' => true])?> <?= $form->field($model, 'User_Mobile')->textInput(['maxlength' => true])?> <div class="form-group"> <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> 

Теперь перейдите в Controller-> open UsersController.php -> введите код, как указано ниже

 public function actionCreate() { if(Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())){ Yii :: $app->response->format = 'json'; return \yii\bootstrap\ActiveForm::validate($model); } } 

спасибо