在Yii Framework中如何验证电子邮件和电子邮件是否存在或未检查?

geo*_*rge 16 php model yii yii-components yii-extensions

如何使用Yii模型验证规则功能代码验证电子邮件.此外,如何使用Yii中的模型验证规则功能检查电子邮件是否存在.

GBD*_*GBD 24

您可以设置模型验证,如下所示

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!'),            
    );
}
Run Code Online (Sandbox Code Playgroud)

Yii参考链接了解更多详情:http://www.yiiframework.com/wiki/56/


Onk*_*nwa 6

您可以创建自定义验证方法以满足您的要求.

在模型类中创建一个函数:

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');
}
Run Code Online (Sandbox Code Playgroud)

在规则中使用此验证方法:

array('email', 'uniqueEmail','message'=>'Email already exists!'),    
Run Code Online (Sandbox Code Playgroud)


Roh*_*har 5

自定义验证,简短而甜蜜的代码。试试这个,效果很好 -

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'),
        );  
    }
Run Code Online (Sandbox Code Playgroud)

在同一模型中编写此自定义函数 -

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


小智 5

对于 Yii2,我在名为 Register 的模型中使用了以下内容,该模型将使用用户类。

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

    ];
}
Run Code Online (Sandbox Code Playgroud)

您需要使用 targetClass 并为类用户放置 Namepsace