Code Igniter form_validation加载致命错误

时间:2011-09-11 08:50:18

标签: codeigniter

我正在使用代码点火器2.0.3。

当我尝试在我的控制器$ this-> load-> library('form_validation')中加载form_validation时,收到错误消息:

  

致命错误:在第44行的D:\ Installation \ xampp \ htdocs \ MyApp \ application \ controllers \ login.php中的非对象上调用成员函数set_rules()

在login.php的第44行,这就是我所拥有的:

  

$ this-> form_validation-> set_rules('name','Name','trim | required');

当我在autoload.php中加载form_validation时,没有错误。

为什么会这样?

2 个答案:

答案 0 :(得分:2)

我能够重现该错误的唯一方法是翻转libraryvalidation的位置:

Causes Error -
$this->form_validation->set_error_delimiters('name', 'Name', 'trim|required');
$this->load->library('form_validation');

Works -
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('name', 'Name', 'trim|required');

在加载类之前,您正在调用类的方法。 这也可以解释为什么自动加载验证不会给你带来任何错误。

答案 1 :(得分:0)

在Loader代码中,CodeIgniter通过“get_instance”方法获取Controller实例以添加加载的对象。

在Controller的子类中,尝试运行该方法并查看返回的内容。

在我的情况下,我发现它是一个自动加载的Controller子类,我甚至没有在我的任何代码中使用或扩展 - 它只是一个存根类的想法我必须让我的所有页面控制器扩展基站控制器,它依次扩展CI_Controller。我强调我没有扩展这个对象,而是绕过它在我自己的页面控制器中的CI_Controller。我不知道CodeIgniter如何得到我想将我的实例添加到该对象的想法,但无论如何修复是从自动加载库列表中删除该对象。

疯狂,但也许它也适合你。