1.场景(scenario)多了怎么办?
项目中的user model,场景有10几个:注册,登录,修改用户基本资料,修改用户附属资料,修改用户密码,修改头像,修改用户隐私策略,修改用户tag,修改用户兴趣,爱好等等.
这么多场景(scenario)和验证(validation)交织在一起,觉得很混乱,CModel::rules函数很难写
2.验证(validation)不能用全局函数么??这样的话有很多验证要重复去写
比如User Model中,有对user_name的validation_rule
在其他model中,比如用户好友,博客作者用户名等Model中,还要重复的去写相应的验证规则
比如我要在项目中的很多model中写上规则
array(‘user_name’,‘match’,‘pattern’=>’/^[a-zA-Z0-9_]{4,16}$/u’,‘message’=>‘账号只能由4-16个字母,数字,下划线组成’),
这样的话比如以后验证策略变了,要求用户名只能是10个字符以内,就比较麻烦,要把项目中所有model中验证user_name的规则进行修改
larryli
(Larryli)
2
[list=1]
[*]尽量不要用Model里面的rules,应该用Form里面的rules
[*]可以写自定义的validation,然后直接 array(‘user_name’,‘ext.your_validation’);
[/list]
chaobowu
(Chaobo Wu)
3
1.据你所说的意思应该是你在每一个功能点上者应用了一个场景吧?我想应该没这个必要,设置场景一般为了区别于一般情况的验证,比如注册需要验证确认密码字段而其它情况下不需要验证这个字段,像这种情况就可以把“确认密码”这个字段的验证指定一个场景而其它的字段默认应用于所有的场景,不需要每一个能点上应用一个场景。
2.多个模型都要用到的验证规则可以自己写成一个验证类,然后在各个model的rule中去运用这个类
toplfx007
(Lifeixiang)
4
Form里面的rules。。。就是根据model里的rules判断
larryli
(Larryli)
5
Form 是 Form,model 是 model,不同的。
当然,gii 生成的代码,是省略了 Form,直接拿 model 当 form 用,自然是 model 的 rules 判断了。