Показать представление для ошибки 404 в CodeIgniter - PullRequest
11 голосов
/ 20 июля 2011

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сообщение об ошибке по умолчанию.

Ответы [ 3 ]

17 голосов
/ 20 июля 2011

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

в application / config / rout.php

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

в application / controllers / welcome.php

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

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

4 голосов
/ 15 января 2012

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

2 голосов
/ 20 июля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...