Yii Model doğrulama kuralları işlev kodunu kullanarak e-postayı doğrulama. Ayrıca Yii'de Model doğrulama kuralları işlevini kullanarak e-postayı nasıl kontrol edeceğinizi veya kontrol etmeyeceğinizi öğrenin.Yii Framework'de e-posta ve e-posta doğrulamak nasıl kontrol edilir veya kontrol edilmez?
cevap
Sen Daha Detay için
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 Referans Linki aşağıda modeliniz doğrulamaları ayarlayabilirsiniz: http://www.yiiframework.com/wiki/56/
Sen şartı yerine getirmek için özel doğrulama yöntemi oluşturabilirsiniz.
modeli sınıfında bir işlev oluşturun: kurallarda
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');
}
Kullanıcı bu doğrulama yöntemi: Kolayca bulabilirsiniz ya e-posta kuralı tanımlayarak zaten db mevcut olup olmadığını
array('email', 'uniqueEmail','message'=>'Email already exists!'),
.
Kural şudur. Örnek. Örnek.
public function rules() {
return array(
...
array('email', 'unique', 'className' => 'User', 'attributeName' => 'email', 'message'=>'This Email is already in use'),
...
);
}
İşte ben tektir Email, üzerinde doğrulama koymak istiyorum, benim modeli sınıf adı Kullanıcı olduğunu attributeName tablonun yani e-postalar alan adıdır ve e-posta tablonuzda zaten varsa o zaman mesaj görüntüleyebilir.
Hata veriyorsa, tablonuzu değiştirebilir ve e-posta alanını benzersiz hale getirebilirsiniz.
ALTER tablo kullanıcı UNIQUE (e-posta) ADD
Sonra kontrol edin.
diğer e-posta doğrulamaları aşağıdadır. hangi e-posta doğrulama tam set düşünün.
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'),
...
); }
İşte bu kadar. Teşekkürler
Özel doğrulama, kısa ve tatlı kod. düzgün şekilde çalışıyorsa bu deneyin -
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'),
);
}
yazma Bu özel işlevi aynı modele -
public function uniqueEmail($attribute, $params)
{
if($user = User::model()->exists('email=:email',array('email'=>$this->email)))
$this->addError($attribute, 'Email already exists!');
}
Yii2 ben Kullanıcı Class kullanacak Kayıt adında bir modelde aşağıdaki kullandı. Kullandığınız sizin modül başına Dosyanızı takip edin:
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.'],
];
}
Sen targetClass kullanmak ve Sınıf Kullanıcı
için Namepsace koymak aşağıda bazı değişiklikler takip gerekir.
Modellere git -> open-> Users.php -> Aşağıdaki gibi satırı değiştirin.
public function rules() { return [ [['User_Email'], 'unique'], [['User_Mobile'],'unique'], ]; }
Şimdi> views- kullanıcıları git -> Aç _form.php-> kod yazmak Şimdi Kontrolör git
<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>
aşağıda belirtildiği gibi -> UsersController.php'yi açın -> aşağıdaki kodyu belirtin werte
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);
}
}
size
ederiz