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 pathtosystemcoreCodeIgniter.php on line 231

в строке 231 в systemcoreCodeIgniter.php - это:

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

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

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

спасибо.

4 ответов


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

в старые времена я использовал straight includes, чтобы собрать шаблон или сделать file_get_contents() или запрос cURL на мой URL страницы 404, но они, наконец, что-то сделали с этим. В 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:

localhost / CodeIgniter_2.1.1 / приложения / контроллеры / страницы.в PHP

вместо адресации url:

localhost / CodeIgniter_2.1.1 / индекс.php/pages / просмотр

Я знаю, что прошло около 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) во всем файле.