CodeIgniter: Класс 'CI_Controller' не найден

Я расширил контроллер CodeIgniter, добавив MY_Controller.php в папку Application / Core. Он отлично работает, но теперь, когда я добавляю следующий код на странице error_404.php в Application/errors , я получаю сообщение об ошибке.

Проблема, вызывающая код:

 <?php $ci =& get_instance();?> <?php $this->ci->load->view('header')?> 

Ошибка:

 Fatal error: Class 'CI_Controller' not found in path\to\system\core\CodeIgniter.php on line 231 

Строка 231 system\core\CodeIgniter.php :

 function &get_instance() { return CI_Controller::get_instance(); } 

Как я могу исправить это, чтобы загружать представление в файл error_404.php, не изменяя ничего в системных файлах.

PS. Я использую последнюю версию.

Благодарю.

Я не думаю, что CI_Controller загружен. Класс Exception обрабатывает вывод страницы 404 с помощью include .

В прежние времена я использовал прямой include s, чтобы скомпоновать шаблон или выполнить запрос file_get_contents() или cURL на мой 404 URL-адрес страницы, но они, наконец, что-то с этим поделали. В 2.0 вы можете определить пользовательскую страницу 404 в routes.php :

 $route['404_override'] = 'controller/method/parameter'; 

Это все еще не идеальное решение , но самый простой способ – просто использовать маршрут.

Обратите внимание, что base_url()."controller/method/parameter" должен быть действительным URL-адресом, и вы должны убедиться, что задаете заголовок 404 в контроллере, который выводит страницу тоже (по какой-то причине это не делается автоматически).

У меня была эта проблема, следуя инструкциям CodeIgniter: http://codeigniter.com/user_guide/tutorial/static_pages.html

Проблема была в том, что я пытался получить доступ к URL:

локальный / CodeIgniter_2.1.1 / приложение / контроллеры / pages.php

вместо адреса URL:

локальный / CodeIgniter_2.1.1 / index.php / страницы / просмотр

Я знаю, что прошло около 18 месяцев с тех пор, как вы задали этот вопрос, но, возможно, он может помочь кому-то другому 🙂

или вы могли бы попробовать это, возможно, немного грязно, но я думаю, что это сработает для меня

обновите свое исключение

 function show_404($page = '', $log_error = TRUE) { if ($log_error) { log_message('error', '404 Page Not Found --> '.$page); } header('Location: http://www.########.###/error/error_404'); die(); } 

то просто создайте контроллер для обработки перенаправления, возможно, с разными ошибками вы можете использовать один и тот же контроллер

таким образом вы получите свой динамический заголовок и нижний колонтитул

Пытаться:

 <?php $ci =& get_instance();?> <?php $ci->load->view('header')?> 

Как только вы назначили экземпляр CI в $ ci, вы можете просто использовать $ ci-> load-> view ('header) во всем своем файле.