在表单模型中创建规则

时间:2014-04-05 08:39:16

标签: php yii

在我的注册表中,我想要在数据库中检查电子邮件:

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;
        }
}

但没有工作,如何创建检查电子邮件的规则?有人可以帮帮我????

2 个答案:

答案 0 :(得分:1)

根据验证结果,Yii验证器实际上不会返回truefalse。相反,他们会为您的模型添加错误,例如

    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'),
            );
    }

这应该有效。