当我的应用程序用户注册下列验证规则提交前称为:不叫上验证Yii的自定义的验证规则()
public function rules()
{
return array(
array('email, firstName, lastName, password, passwordConfirm, telephone', 'required'),
array('club, email, firstName, lastName, level, password, telephone', 'length', 'max'=>45),
array('passwordConfirm', 'compare', 'compareAttribute'=>'password', 'on'=>'register'),
array('email', 'isUniqueEmailAddress'),
);
}
前三验证规则成功完成,但第四(自定义验证方法)不。应该调用函数“isUniqueEmailAddress”并执行以下操作:
/*
* Returns true if there doesn't exist a user in the database with the submitted email
*/
public function isUniqueEmailAddress($attribute, $params)
{
//if (User::model()->find('email=:email', array(':email'=>$this->email)) !== null)
//{
$this->addError('email', 'Email account already exists');
//}
}
正如你所看到的,我甚至注释掉所有的逻辑简单地确保验证错误被发回登记表,但没有验证()返回错误。我已阅读Yii's Documentation并搜索论坛,但无法理解为什么我的自定义验证方法未被调用?
你在使用检查模型中的错误? '$模型 - > getErrors()'? 该模型的场景是什么? 你有一个自定义'beforeValidate()'方法吗?如果是这样,你是否真的回来了? 您是否尝试将'CApplication :: end();'放入该验证方法中以查看它是否真的被调用? – Ben 2012-02-09 01:12:24