Php Yii model rules()方法不';行不通
我的一个应用程序模型的rules()方法有问题 以下是规则() (代码的格式很抱歉) 问题是: 我想测试“valid\u until\u formatted”是否大于“valid\u from\u formatted” 当我用错误的值提交表单时(有效值从大于vali直到),我收到一条错误消息,我可以在firebug上看到它,但这些值被插入到数据库中 但举例来说,若我尝试使用一个已经使用的用户名或少于6个字符的密码,那个么我就有一个错误,并且数据库中并没有创建任何内容 有人知道为什么这个规则不起作用吗(即使我收到错误消息)? (这是在格式化之前有效的格式,例如:“20121118”) 谢谢你阅读我的文章,对不起,我的英语水平不高 祝您愉快:)Php Yii model rules()方法不';行不通,php,validation,yii,yii-validation,Php,Validation,Yii,Yii Validation,我的一个应用程序模型的rules()方法有问题 以下是规则() (代码的格式很抱歉) 问题是: 我想测试“valid\u until\u formatted”是否大于“valid\u from\u formatted” 当我用错误的值提交表单时(有效值从大于vali直到),我收到一条错误消息,我可以在firebug上看到它,但这些值被插入到数据库中 但举例来说,若我尝试使用一个已经使用的用户名或少于6个字符的密码,那个么我就有一个错误,并且数据库中并没有创建任何内容 有人知道为什么这个规则不起作
Michael听起来你的价值观之间的比较并不像预期的那样有效 根据:
case'>':
如果($valuemessage!==null?$this->message:Yii::t('Yii','{attribute}必须大于“{compareValue}”);
$this->addError($object,$attribute,$message,array('{compareAttribute}'=>$compareTo,{compareValue}'=>$compareValue));
}
打破
根据这种方式,您的比较似乎是反向的。如果您将
'>'
翻到'会发生什么情况?谢谢大家的回答
事实上我犯了个大错
我不知道save()调用了validate()方法。实际上,我正在尝试保存一个用户,我不明白为什么我的CustomUser模型中的规则没有运行-\u-
测试是在我的User:rules()上进行的,我的CustomUser::rules()继承了我的User::rules()…无论如何,我这样解决了这个问题
如果(myCustomUser->validate()){
myUser=新用户
myUser->save(false)
}
这样,我就可以使用CustomUser的验证规则创建一个用户
谢谢,祝您度过愉快的一天:)我们可以看看您的rules()函数的其余部分吗?您是否返回$newRules或是否有任何其他处理?是的,可能是:-),但他的代码与他得到的代码不兼容。至少,他可以用自己的值运行if语句来仔细检查事情是否正常。你真的应该把自己的答案标记为正确。将另一个答案标记为正确将导致其他人认为比较是倒退的,而不是真正的问题(您使用的是两种不同的模型)
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'),
);
}
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;