Thinkphp自动验证callback的问题

浏览:3651 发布日期:2014/08/26 分类:求助交流 关键字: model callback
现在我有一个model
代码如下:
MemberModel.class.phpclass MemberModel extends Model{
     public function updatePassword(){
        $Member= M('member');
        $_validate = array(
                array('password, npassword', '提示信息', 'userMakeCall', Model::MUST_VALIDATE, 'callback', Model::MODEL_BOTH)
        );
        $Member->setProperty("_validate", $_validate);
        if($Member->create()){
            echo 'yes';
        }else{
            echo($Member->getError());
        }
     }
     public function userMakeCall($data){
        return true;
     }
}
IndexAction.class.phpclass IndexAction extends Action{
    $model = D('Member');
    $_POST['password'] = '123';
    $_POST['npassword'] = '123';
    $model->updatePassword();
}
现在这样写的时候是报错了 提示 Model类中没有userMakeCall方法
将 userMakeCall 方法写在系统Model.class.php中运行正常 返回验证成功
查看Model类中的验证方法 _validationFieldItem            case 'function':// 使用函数进行验证
            case 'callback':// 调用方法进行验证
                $args = isset($val[6])?(array)$val[6]:array();
                if(is_string($val[0]) && strpos($val[0], ','))
                    $val[0] = explode(',', $val[0]);
                if(is_array($val[0])){
                    // 支持多个字段验证
                    foreach($val[0] as $field)
                        $_data[$field] = $data[$field];
                    array_unshift($args, $_data);
                }else{
                    array_unshift($args, $data[$val[0]]);
                }
                if('function'==$val[4]) {
                    return call_user_func_array($val[1], $args);
                }else{
                    return call_user_func_array(array(&$this, $val[1]), $args);
                }
中 查看 如果是callback
return call_user_func_array(array(&$this, $val[1]), $args);
中的 $this 为 Model 并不是我的 MemberModel 所以也就没有 userMakeCall 方法

请确认是否存在该问题

最佳答案
评论( 相关
后面还有条评论,点击查看>>