在Codeigniter调用中将表单验证扩展到非对象错误的成员函数

时间:2013-01-15 17:29:22

标签: codeigniter codeigniter-2

我知道以前曾经问过这个问题,而且我已经查看了所有发布的答案,但无济于事。基本上,我正在尝试在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_设置为我的自定义类前缀

1 个答案:

答案 0 :(得分:0)

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

  1. 将自定义表单验证类移至application/libraries文件夹
  2. 您可以保留自定义类的结构
  3. 使用$this->form_validation->method()访问您想要的功能
  4. 只要您加载form_validation库,就不需要执行$this->load->library('custom_class'),因为CI会自动选择您的自定义前缀
  5. 希望这有助于某人