我有表格email
字段,signup
我想用数据库验证电子邮件域,例如
Email adress is : example@work.com or etc@etc.com
现在我想验证work.com
oretc.com
是否在 db 中列出,如果没有,那么它不应该是 vaidat.!
谁能帮我这个 ?
我有表格email
字段,signup
我想用数据库验证电子邮件域,例如
Email adress is : example@work.com or etc@etc.com
现在我想验证work.com
oretc.com
是否在 db 中列出,如果没有,那么它不应该是 vaidat.!
谁能帮我这个 ?
代码:
public function validate($attributes = null, $clearErrors = true) {
parent::validate($attributes, $clearErrors);
if (!$this->hasErrors('email')) {
$a = explode('@', $this->email);
if (isset($a[1])) {
$record = AllowedDomains::model()->findByAttributes(array('domain'=>$a[1]));
if ($record === null) {
$this->addError('email', "This domain isn't allowed");
}
}
}
return !$this->hasErrors();
}
笔记:
您可以通过在模型的规则部分添加自定义 yii 验证器来完成此操作。这是一些示例代码:
public $email; // This is the field where the email is stored
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
return array(
array('email', 'checkDomain'),
);
}
之后,您可以添加自定义验证功能
public function checkDomain($attribute,$params)
{
$sEmailDomain = substr(strrchr($this->email, "@"), 1);
// Check if the domain exists
...
// If the domain exists, add the error
$this->addError('email', 'Domain already exists in the database');
}
更多信息可以在这里找到:http ://www.yiiframework.com/wiki/168/create-your-own-validation-rule/