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