Вызов неопределенного метода CI_Form_validation :: ci_form_validation () при расширении класса в CodeIgniter - PullRequest
1 голос
/ 02 ноября 2011

Я хочу добавить несколько пользовательских функций проверки для моего проекта.Я использую CI 2.0.2.Я выполнил все шаги, описанные на www.michaelwales.com / 2010/02 / basic-pattern-match-validation-validation-in-codeigniter /

Я создал класс в приложении \библиотеки следующим образом -

<?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

Я добавил правило в свое приложение \ 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 ]

3 голосов
/ 03 ноября 2011

Наконец-то у меня все заработало:)

Все шаги, которые я объяснил в моем вопросе, верны. В CI2 +, как упомянул swatkins , мы должны хранить файлы расширенного базового класса в application / core и файлы библиотеки в application / library.

Я сохранил свой расширенный 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

И проверил это. Была вызвана моя пользовательская функция, и я также получил сообщение об ошибке. Надеюсь, это кому-нибудь поможет.

0 голосов
/ 19 августа 2016

Создайте имя файла в каталоге приложения / библиотеки MY_Form_validation.php

тогда в вашем классе

Код:

class MY_Form_validation extends CI_Form_validation

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

}
0 голосов
/ 02 ноября 2011

В CI2 + вам нужно поместить эти новые библиотеки, расширяющие ядро, в папку core, а не в libraries.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...