在CodeIgniter中扩展类时调用未定义的方法CI_Form_validation :: ci_form_validation()

时间:2011-11-02 14:13:50

标签: php codeigniter

我想为我的项目添加一些自定义验证功能。我正在使用CI 2.0.2。我按照www.michaelwales.com/2010/02/basic-pattern-matching-form-validation-in-codeigniter/

中描述的所有步骤进行了操作

我在application \ libraries中创建了一个类,如下所示 -

<?php if (!defined('BASEPATH')) exit('No direct script access allowed.');
class MY_Form_validation extends CI_Form_validation {

     public function MY_Form_validation() {
        parent::__construct();
      }

             function valid_us_zip()
            {...........}
}//class ends

我将规则添加到我的application \ config \ form_validation.php中,如下所示 -

   $config = array(
       'login/sign_up_process' => array(
           array(
                 'field' => 'txt_username_signup',
                 'label' => 'Username',
                 'rules' => 'trim|required|valid_email|xss_clean|prep_for_form'
                                     ),
           array(
                 'field' => 'txt_zip_signup',
                 'label' => 'Zip',
                 'rules' => 'trim|required|valid_us_zip|xss_clean|prep_for_form'
                                     )                                           

                                )
           );

在我的控制器功能中,我添加了代码 -

$this->load->library('form_validation');
echo "Error ::".$this->form_validation->run();

我的验证在扩展表单验证类之前有效,但现在即使我提交空表单也不会出现任何错误。我无法解决这个问题:(

3 个答案:

答案 0 :(得分:3)

最后,我得到了它的工作:)

我在问题中解释的所有步骤都是正确的。在CI2 +中,正如 swatkins 所提到的,我们要将应用程序/核心和库文件中的扩展核心类文件保留在应用程序/库中。

我在应用程序/库中保留了扩展的MY_Form_validation.php,发现$ config没有传递给parent的构造函数。我把它编辑为 -

<?php if (!defined('BASEPATH')) exit('No direct script access allowed.');
class MY_Form_validation extends CI_Form_validation {

 public function MY_Form_validation($config) {
    parent::__construct($config);
  }

         function valid_us_zip()
        {...........}
}//class ends

并测试了它。我的自定义函数被调用,我也收到了错误消息。我希望这有助于某人。

答案 1 :(得分:0)

在CI2 +中,您需要将这些新库扩展到core文件夹中,而不是libraries

答案 2 :(得分:0)

在您的应用程序/库目录中创建文件名: 的 MY_Form_validation.php

然后在你的班级

代码:

class MY_Form_validation extends CI_Form_validation

{
 function My_Form_validation()
   {
       parent::__construct();
   }

}