╃巡洋艦㊣
- ╃巡洋艦㊣ 发表了说说8月份补签卡爆料:建军节1张,七夕1张,日本投降日3张,敬请期待...
- ╃巡洋艦㊣ 2016-07-31 已签到连续签到505天,获得了20个金钱
- ╃巡洋艦㊣ 关注了guxiao1976
- ╃巡洋艦㊣ 2016-07-30 已签到连续签到504天,获得了20个金钱
- ╃巡洋艦㊣ 赞了说说花繁柳密处,拨得开,才是手段;风狂雨急时,立得定,方见脚根。
- ╃巡洋艦㊣ 赞了回答
safe验证器和其他验证器比如email,url是一个级别的,没有任何特殊之处的。如果非要说特别之处,那就是如果在相同场景下对相同的属性声明一次email规则和safe规则,那么生效的会是email。
所以说真正决定在一个场景中一个验证器是否生效的是当前场景是否包含了该验证器所验证的属性以及该验证器的属性是否指定了生效场景。
有如下几种主要情况及对应结果
1。一个场景没有声明任何验证属性,仅仅是个空数组,但rules()却有无穷无尽的验证规则。 结果:使用该场景的model调用validate()不会进行任何的验证。
2。一个场景声明了一些属性,一些属性没有声明应用场景。 结果:该场景所包含的属性如果在这些没有声明场景的属性里,则依旧会被得到验证。 所以没有声明场景的属性会得到所有声明该属性的场景的关爱。
3。一些属性指定了应用场景,但不是该场景的另外一个场景也声明了这个属性。 结果:后者的场景无法进行验证,毕竟他的所爱已经心有所属。
所以说楼主的email的safe 会被所有声明email属性的场景使用。但由于之前提到的email的权重比safe大。所以create和update场景呈现出来的是对email属性进行了email验证器的验证。