关于验证器

#1 hblzxsj

当前的验证器,在create时验证没什么问题,但是在部分更新的时候,验证则有一点问题,因为即便数组中只有一个待更新字段,那么验证器也会全部起作用从而通不过验证,因为是否有必要区别一下验证时待进行的操作。


另外我是这么处理的:
spVerifier
__input 中加上
  $update=FALSE;
  if(isset($args[2]) && is_array($args[2])){
   if($args[2]['update'])$update=TRUE;
  }

checkrules
 
private function checkrules($values,$update=FALSE){
  $this->checkvalues = $values;
  foreach( $this->verifier["rules"] as $rkey => $rval ){
   if($update&&!isset($values[$rkey]))continue;

调用方法

 
  $user=spClass("model_user");
  $arr=array('name'=>'test');
  dump($user->spVerifier($arr,null,array('update'=>TRUE)));


另外大量参数采用排列而不是散列方式输入函数,虽然降低了代码复杂性,但是扩展性受到影响

2010-04-30 15:37:30

#2 jake

嗯,楼主的意思,可以这样理解不?
是否批量允许 not null = false,即是说,只验证格式(有提交的数据),不验证有无(没有提交的数据)。这里的代码就是“如果在update = true”的情况下,那么就使用这种宽松的方式检查。

对的,目前spVerifier是有个逻辑错误,也就是说“如果开发者明确允许使用宽松的方式检查,那么spVerifier应该可以提供,而不是一直不允许”。

这个建议挺好的:handshake

2010-04-30 15:56:51

#3 hblzxsj

还不仅仅是notnull,因为比如增加的一些用户验证器,checkusername等等,不一定会让空值通过,而update则是直接把这些rules跳过,不执行
还有默认验证器有点少,我觉得isnumber, enum这类验证器还是挺通用的

2010-04-30 16:21:09