创建自己的spVerifier验证规则时,能否读取其他字段

#1 cmonday

spVerifier有一个内置功能叫equalto,可以这样用:
"rules" => array( // 规则
                        'password' => array(  // 这里是对密码的验证规则
                                'notnull' => TRUE, // 密码不能为空
                                'minlength' => 5,  // 密码长度不能小于5
                                'maxlength' => 12, // 密码长度不能大于12
                        ),
                        'comfirm_password' => array(  // 这里是对第二次输入的密码的验证规则
                                'equalto' => 'password', // 要等于'password',也就是要与上面的密码相等
                        ),               



也就是说,只要给出相应的规则字段名即可获取到其他字段的名字,然后做判断。
我目前的需求是,在定义规则里读取两个这样的字段名,然后做一个判断。但是现在遇到了一些困难。
我看了一下spModel里的源码,equalto是这样实现的:

private function equalto($val, $right){dump($this);return $val == $this->checkvalues[$right];}



而这里的$this->checkvalues是在spVerifier里定义的private变量,如果在外部创建自己的验证规则,是没法调用的。

特来求助

2012-01-26 14:51:27

#2 cmonday

呃,这里我没法编辑自己的帖子么?
第二段代码多了一个 dump($this); 是我调试的时候加上的,不是原有的哈

2012-01-26 14:53:13

#3 cmonday

呃,这里我没法编辑自己的帖子么?
第二段代码多了一个 dump($this); 是我调试的时候加上的,不是原有的哈

2012-01-26 14:53:31

#4 cmonday

呃,这里我没法编辑自己的帖子么?
第二段代码多了一个 dump($this); 是我调试的时候加上的,不是原有的哈

2012-01-26 14:53:53

#5 jake

你可以这样获取到其他的字段,不需要使用spVerifier的private变量(也是因为这个变量不允许直接读取,所以才private的)

function equalto2($val, $right, $args){
// 这里$args就是全部的输入数据
dump($args);

}

2012-01-26 15:08:13

#6 cmonday

你可以这样获取到其他的字段,不需要使用spVerifier的private变量(也是因为这个变量不允许直接读取,所以 ...
jake 发表于 2012-1-26 15:08
啊,感谢jake原来那句“其他的输入字符”就是这个意思,是我看的时候疏忽了~:P

2012-01-26 18:49:18