spVerifier()->addrules问题求解

#1 jeffrey_shou

为区分添加用户和用户登录的验证区分,现在用了以下代码,但执行后不行。望求解。
$oUser->spVerifier()->addrules("for_adduser",array("lib_user","verifier_for_adduser"));

-------------------------------------------------
class lib_user extends spModel
{
var $pk = "uid"; // 每个留言唯一的标志,可以称为主键
var $table = "user"; // 数据表的名称
var $verifier = array( // 验证登录信息,由于密码是加密的输入框生成的,所以不需要进行“格式验证”
  "rules" => array( // 规则
   'uname' => array(  // 这里是对uname的验证规则
    'notnull' => TRUE, // uname不能为空
    'minlength' => 3,  // uname长度不能小于3
    'maxlength' => 12  // uname长度不能大于12
   ),
  ),
  "messages" => array( // 提示信息
   'uname' => array(
    'notnull' => "用户名不能为空",
    'minlength' => "用户名不能少于3个字符",
    'maxlength' => "用户名不能大于20个字符"
   ),
  )
);
var $verifier_for_adduser=array(
  "rules" => array( // 规则
   'upass_check'=>array(
    'equalto' => 'upass',
   ),
  ),
  "messages" => array( // 提示信息
   'upass_check'=>array(
    'equalto' => '两次输入的密码不相同,请检查后重新输入!',
   ),
  ),
);

2010-04-26 14:08:50

#2 jake

上面的用法错了,spVerifier()->addrules("for_adduser",array("lib_user","verifier_for_adduser"));
那么这个verifier_for_adduser应该是一个函数,而楼主的verifier_for_adduser是一个变量。

关于addrules的说明:
        /**
         * 加入附加的验证规则
         *
         * @param rule_name    验证规则名称
         * @param checker    验证器,验证器可以有两种方式:
         * 第一种是  '验证函数名',这是当函数是一个单纯的函数时使用
         * 第二种是 array('类名', '方法函数名'),这是当函数是一个类的某个方法函数时候使用。
         */
        public function addrules($rule_name, $checker){
                $this->add_rules[$rule_name] = $checker;
        }

2010-04-26 14:32:29