在我的注册表中,我想要在数据库中检查电子邮件:
class RegisterForm extends CFormModel
{
public $firstName;
public $lastName;
public $email;
public function rules()
{
return array(
array('firstName, lastName, email', 'required'),
array('email', 'email'),
array('email', 'checkEmail'),
);
}
public function attributeLabels()
{
return array();
}
public function checkEmail()
{
$record = Account::model()->findByAttributes(array('username'=>$this->email));
if ($record==null) {
return true;
}
return false;
}
}
但没有工作,如何创建检查电子邮件的规则?有人可以帮帮我????
答案 0 :(得分:1)
根据验证结果,Yii验证器实际上不会返回true
或false
。相反,他们会为您的模型添加错误,例如
public function checkEmail()
{
$record = Account::model()->findByAttributes(array('username'=>$this->email));
if ($record != null) {
$this->addError('email', 'Email should be unqiue');
}
}
答案 1 :(得分:0)
最好使用CUniqueValidator进行此项检查
public function rules()
{
return array(
array('firstName, lastName, email', 'required'),
array('email', 'email'),
array('email', 'unique', 'attributeName' => 'username', 'className' => 'Account'),
);
}
这应该有效。