我的应用程序模型之一的rules()方法有问题。
public function rules()
{
$newRules = array(
array('password_verification', 'required'),
array('password_verification', 'length', 'min'=>6, 'max'=>32),
array('password', 'compare', 'compareAttribute'=>'password_verification'),
array('username, email', 'length', 'min'=>3,'max'=>255),
array('password', 'length','min'=>6, 'max'=>32),
array('username, email', 'unique'),
array('email', 'email'),
array('valid_until_formated','compare',
'compareAttribute'=>'valid_from_formated','operator'=>'>'),
array('id, type,username, password, password_verification, email, valid_from, valid_until, valid_until_formated, valid_from_formated, added_on, created_by','safe'),
);
}
(对不起代码的格式)。
我想测试“valid_until_formated”是否大于“valid_from_formated”。
当我提交的表单中包含错误的值(valid_from大于vali_直到)时,我收到一条错误消息,我可以在firebug上看到它,但值会插入到数据库中。
但是,例如,如果我尝试使用已使用的用户名或字符数少于6的密码,那么我有一个错误,数据库中没有创建任何内容?
有没有人知道为什么这条规则不起作用(即使我收到错误信息)? (这是valid_until_formated的格式,例如:“20121118”)
感谢您阅读我并抱歉我的大概英语。
祝你有个美好的一天:)
迈克尔
答案 0 :(得分:1)
谢谢大家的回答。
实际上这是我犯的转储错误。
我不知道save()方法调用了validate()方法。实际上我试图保存用户,但我不明白为什么我的CustomUser模型中的规则没有运行 - _ - 。
测试在我的User:rules()上,我的CustomUser :: rules()继承了我的User :: rules()......无论如何我修复了这个问题。
if(myCustomUser-> validate()){
myUser =新用户;
......
myUser->保存(假);
}
就像我可以使用CustomUser的验证规则创建用户。
谢谢,祝你有愉快的一天:)
答案 1 :(得分:-1)
听起来您的值之间的比较没有按预期工作。
case '>':
if($value<=$compareValue)
{
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be greater than "{compareValue}".');
$this->addError($object,$attribute,$message,array('{compareAttribute}'=>$compareTo,'{compareValue}'=>$compareValue));
}
break;
根据其工作方式看起来您的比较是倒退的。如果您将'>'
翻转为'<'
会怎样?