Отобразить представление для ошибки 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.
Ответы
Ответ 1
Вы должны изменить свои маршруты .php. Например:
в приложении /config/routes.php
$route['404_override'] = 'welcome/_404';
в приложении/контроллерах/welcome.php
function _404(){
$this->load->view("my404_view");
}
И этого должно быть достаточно в текущей версии CI.
Ответ 2
Включение заголовков и нижних колонтитулов на странице 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.
Ответ 3
Здесь есть довольно много информации.
http://maestric.com/doc/php/codeigniter_404
http://www.nickyeoman.com/blog/apache/90-htaccess-404-page
http://hasitha.posterous.com/customizing-error-pages-on-codeigniter (в архиве)