0

我知道以前有人问过这个问题,并且我已经查看了发布的每个答案,但无济于事。基本上,我试图在 CI2+ 项目上扩展 Codeigniter 表单验证库,但每次我得到错误:

Fatal error: Call to a member function get_errors_array() on a non-object

下面是我的代码:

应用程序/核心/CB_Form_validation.php

class CB_Form_validation extends CI_Form_validation{
    function __construct($rules = array()) {
        parent::__construct($rules);
        log_message('debug', "CB_Form_validaiton class initialized");
    }

    public function get_errors_array() {
        return $this->_error_array;
    }
}

然后在我的ajax文件中我有构造等。

public function save(){
    if($this->form_validation->run() == FALSE){

    }
}

在 if 语句中,我尝试了以下操作:

echo $this->form_validation->get_errors_array();
echo $this->cb_form_validation->get_errors_array();
echo get_errors_array();

我也尝试过将其CB_Form_validation.php放入应用程序/库中。同样,我也在我的 ajax 控制器的构造中尝试过这个

$this->load->library('CB_Form_validation');
$this->load->library('core/CB_Form_validation');

我已经设置CB_为我的自定义类前缀

4

1 回答 1

0

事实证明,要解决此问题,您应该执行以下操作:

  1. 将您的自定义表单验证类移动到application/libraries文件夹
  2. 您可以保持自定义类的结构不变
  3. 用于$this->form_validation->method()访问您想要的功能
  4. 只要您加载form_validation库,您就不需要执行$this->load->library('custom_class'),因为 CI 无论如何都会选择您的自定义前缀

希望这可以帮助某人

于 2013-01-15T17:49:11.693 回答