Code Igniter form_validation загрузить фатальную ошибку - PullRequest
0 голосов
/ 11 сентября 2011

Я использую воспламенитель кода 2.0.3.

Когда я пытаюсь загрузить form_validation в моем контроллере $ this-> load-> library ('form_validation'), я получаю сообщение об ошибке:

Неустранимая ошибка: вызов функции-члена set_rules () для необъекта в D: \ Installation \ xampp \ htdocs \ MyApp \ application \ controllers \ login.php в строке 44

В строке 44 в login.php, это то, что у меня есть:

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

Когда я загружаю form_validation в autoload.php, ошибок нет.

Почему это происходит?

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Единственный способ, которым я мог воспроизвести эту ошибку, это перевернуть позицию library и validation:

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');

Вы вызываете метод класса перед тем, как классзагружен.Это также объясняет, почему автозагрузка проверки не произвела для вас ошибки.

0 голосов
/ 26 сентября 2011

Внутри кода Loader CodeIgniter получает экземпляр Controller для добавления загруженных объектов с помощью метода «get_instance».

В вашем подклассе Controller попробуйте также запустить этот метод и посмотреть, что возвращается.

В моем случае я обнаружил, что это был автоматически загруженный подкласс Controller, который я даже не использовал или не расширял ни в одном из своих кодов - это был просто класс-заглушка для идеи, которую я должен был иметь для всехмои контроллеры страниц расширяют базовый контроллер сайта, который в свою очередь расширяет CI_Controller.Я подчеркиваю, что я не расширял этот объект, а скорее обошел его для CI_Controller в моем собственном контроллере страницы.Я понятия не имею, как CodeIgniter получил идею о том, что я хотел добавить свои экземпляры к этому объекту, но в любом случае исправление состояло в том, чтобы удалить этот объект из списка библиотек автозагрузки.

Сумасшедший, но, возможно, это будет работать для вастоже.

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