exist是个常用的验证规则,
不过一直都遇到一个问题,就是允许为空的问题上面,
验证规则默认的 allowEmpty 属性是为 true的,也就是说,运行为空
但这个验证,一般为验证主键Id所使用,Id一般为自增长的整型字段,空值就是 0,
但是,exist 调用的是 CValidator::isEmpty() 方法来验证是否为空,且 "0" 不视为空,这个就有点棘手了。。。
我的建议是有两套方案:
方案1、直接让 CValidator::isEmpty() 判断 === “0” 或 === 0 时,返回true
方案2、可以直接在规则配置中,定义空值范围,例如 emptyValues=array(’’,0,‘0’)