Отобразить представление для ошибки 404 в CodeIgniter

CodeIgniter имеет очень простое сообщение об ошибке 404 по умолчанию:

404 Page Not Found The page you requested was not found. 

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

С этой целью я создал представление об ошибке? Например:

my404_view.php

 <? $this->load->view('header'); ?> 404 Page Not Found The page you requested was not found. <? $this->load->view('footer'); ?> 

Теперь, как я могу использовать этот my404_view.php в качестве представления по умолчанию для отображения 404 сообщений вместо использования сообщения об ошибке по умолчанию CodeIgniter.

Вы должны изменить свои маршруты.php. Например:

в приложении / config / routes.php

 $route['404_override'] = 'welcome/_404'; 

в приложении / контроллеры / welcome.php

 function _404(){ $this->load->view("my404_view"); } 

И этого должно быть достаточно в текущей версии CI.

Включение заголовков и нижних колонтитулов на странице 404 с ошибкой по умолчанию, похоже, является общей проблемой для пользователей CodeIgniter. Я хотел бы добавить эту ссылку: комментарии Саймона Эмса на http://www.simonemms.com/2011/05/06/codeigniters-404-override-problem/, потому что он так четко описывает проблему. Я пробовал предложения на http://maestric.com/doc/php/codeigniter_404 и играл с идеями Саймона Эммса и другими, но просто не могу их реализовать. Я немного новичок в PHP и CodeIgniter, так что это может быть из-за невежества. Тем не менее, трудно обеспечить, чтобы вы поместили предлагаемые подклассы в нужные места и правильно настроили, например, route.php. По прошествии 3 дней с точки зрения различных довольно сложных идей мне пришло в голову, что я могу просто использовать оператор include на странице ошибки 404 по умолчанию. Единственная трудность заключалась в выяснении пути перехода к заявлению include. В строке /system/core/Exceptions.php 146 я обнаружил, что разработчики CodeIgniter используют APPPATH. Затем вам нужно добавить путь к страницам заголовка и нижнего колонтитула, которые вы хотите включить. Теперь моя новая ошибка 404 выглядит так:

 <?php include APPPATH.'/views/templates/header.php'; ?> <div id="container"> <h1><?php echo $heading; ?></h1> <?php echo $message; ?> </div> <?php include APPPATH.'/views/templates/footer.php'; ?> 

Мне кажется, это намного проще, чем пытаться изменить основные классы в CodeIgniter.