关于spVerifier的问题

#1 wltony

spVerifier 在验证的时候能不能自己选择哪些字段需要验证!
例如,我在 $verifier 定义了3个rules
username , password,email
有时候我只需要验证username 和password

这个要怎么处理呢?

2010-08-29 23:01:26

#2 jake

不需要把spVerifier 的规则看得如此神秘。其实$verifier就是一个数组。

以下有三个方法都是直接操作数组达成你想要的效果的:

第一种:处理notnull的取值。

在验证username, password,email的时候,这三个规则都有notnull = true的限制,那么也就是这三个都需要是“非空”才能通过验证。
如果你需要只验证username,password的时候,就可以在$verifier中将email的规则notnull取值成false即可。
$g=spClass('lib_user');
$g->verifier['rules']['email']['notnull'] = false;
$g->spVerifier($this->spArgs());

第二种:增加验证规则

上面的方法以最多项的数组为基础,这里还可以以最少项的数组为基础,需要再增加。
比如说验证username,password的规则$verifier,然后再加上email的就可以验证username password,email三者了。
$g=spClass('lib_user');
$g->verifier['rules']['email'] = array( ...// email的规则 );
$g->spVerifier($this->spArgs());

第三种:切换验证规则
其实‘代码重用’不代表不能复制粘贴,只要是代码级的复用可以增加开发效率的方法,我们都是可以接受的。
所以可以在验证注册的时候使用一个规则,验证登录的时候使用一个规则。到验证之前就切换对应的验证规则即可。
$g=spClass('lib_user');
$g->verifier = $g->login_verifier; // 对verifier 赋值为login_verifier 也就是切换到登录验证
// 如果是注册,则是$g->verifier = $g->register_verifier;
// 而这里,整个lib_user就可以说是一个“重用”,因为在下一个应用里面,它是可以直接使用的。
$g->spVerifier($this->spArgs());

2010-08-30 09:02:13

#3 wltony

谢谢 jake 的解答!昨晚还是自己看了下spVerifier的源代码研究了一下

2010-08-30 10:08:43