在codeigniter HMVC架构中使用自定义身份验证库中的回调函数

时间:2012-07-15 06:44:29

标签: php codeigniter hmvc

我正在使用codeigniter HMVC架构开发应用程序。我是HMVC的新手,刚刚开始探索它。最近我开始在codeigniter中将我的代码转换为MVC中的HMVC。我开发了一个自定义身份验证库,它位于我的application / libraries文件夹中,该文件夹具有注册和登录表单的身份验证规则。我在验证中编写了一些回调函数,当我选择HMVC框架时突然停止工作。我遇到了一些修复此问题的参考文献,但都是徒劳的。我无法以某种方式使我的代码工作。根据一个共同的建议,我建立了一个MY_Form_validation如下:

class MY_Form_validation extends CI_Form_validation
{
    public $CI;
}

然后在我的身份验证库中我使用了这个:

                $this->CI = & get_instance();
                $this->CI->load->library('form_validation');
                $this->CI->form_validation->CI = $this->CI;

并且为了验证我使用它:

if($this->CI->form_validation->run($this->CI)==FALSE)

但不知怎的,我的验证检查没有被执行。它曾经用于我的MVC框架。

1 个答案:

答案 0 :(得分:0)

" $ this-> CI-> form_validation-> CI = $ this-> CI;"为什么要做很多交叉引用?

这就是我的扩展表单验证库的方法,它正在运行。

class MY_Form_validation extends CI_Form_validation {
    public function valid_url($url) {
        $pattern = '/^http(s)?:\/\/[a-z0-9]{1}[0-9a-zA-Z\-]*([\.a-zA-Z])+([a-zA-Z0-9\-\/\?=])*$/';
        if (preg_match($pattern, $url)) {
            return true;
        } else {
            $this->set_message('valid_url', "%s is not a valid url.");
            return false;
        }
    }
}

然后您就可以像使用表单验证库一样使用。