半个多月没更了,主要是最近确实太忙了,除了项目要做,还有很多杂活要干,这不以前的存量客户都要挨个做公安备案了。外加最近去跑社保和公积金开户的事情,有点跟不上节奏,今天水文是强行逼着自己写的,原本这时候我应该在撸我的系统更新,暂时先放放,水两篇文章再说。在系统升级到TP5.1的时候发现原本使用的场景验证中的重置规则竟然失效了,翻了下手册发现,用法有变,遂记录下来,免得自己忘了。
例如在用户登录和修改信息的时候,使用到密码字段,通过定义password字段为require和min规则,限制password的必填和最小长度。
然后定义两个场景,一个是登陆场景(login),一个是修改场景(edit)。如果在登录控制器中直接使用scene('login')场景,就会出现密码最小长度的验证信息。作为安全角度来说,密码最小长度只在修改时需要,而在登录场景中最好不提示。这时就需要对password的规则在场景中重置。
在5.0中,系统提供直接在场景中使用数组重置规则。如图这样既可。
而在5.1中这个方法却失效了,如果需要重置规则,需要使用按手册上的重新定义一个场景方法。使用场景scene关键字加上场景名为方法名,通过remove或者append方法移除或追加规则。例如本例中的规则可以写成如图所示。
这样就完成了场景规则的重置操作。其实非常简单,主要是5.0升级到5.1的综合代价还是挺大的,因为官方5.0还在维护中,建议系统比较大的,且5.0印记比较深的程序还是别轻易升级到5.1的好。