Добрый день, %username%!
Данную статью навеяло меня написать, создавая очередной проект, на «новой» Kohana 3.3. Мне необходимо было ловить исключения 404 ошибки и выводить свою страницу. Я решил пойти старым, но работающим путём. Раньше я просто ловил исключения функцией set_exception_handler, и обрабатывал в моём классе. Подробнее под катом. Это можно назвать костылём, которые я не очень сильно люблю, но на тот момент у меня не было другого выбора. В итоге в последней версии исключения просто не желали «ловиться». Я недоумевал, и уже готов был проклять фреймворк, пока полностью не пробежался по официальной документации последней версии. В итоге ребята наконец-то решили эту неудобную проблему, всё стало очень просто. Нам просто нужно переопределить класс нашего exception’a. И мы более не прибегаем к использованию «костылей».
Данную статью навеяло меня написать, создавая очередной проект, на «новой» Kohana 3.3. Мне необходимо было ловить исключения 404 ошибки и выводить свою страницу. Я решил пойти старым, но работающим путём. Раньше я просто ловил исключения функцией set_exception_handler, и обрабатывал в моём классе. Подробнее под катом. Это можно назвать костылём, которые я не очень сильно люблю, но на тот момент у меня не было другого выбора. В итоге в последней версии исключения просто не желали «ловиться». Я недоумевал, и уже готов был проклять фреймворк, пока полностью не пробежался по официальной документации последней версии. В итоге ребята наконец-то решили эту неудобную проблему, всё стало очень просто. Нам просто нужно переопределить класс нашего exception’a. И мы более не прибегаем к использованию «костылей».
class HTTP_Exception_404 extends Kohana_HTTP_Exception_404 { /** * Generate a Response for the 404 Exception. * * The user should be shown a nice 404 page. * * @return Response */ public function get_response() { $view = View::factory('errors/404'); // Remembering that `$this` is an instance of HTTP_Exception_404 $view->message = $this->getMessage(); $response = Response::factory() ->status(404) ->body($view->render()); return $response; } }
Пример из официальной документации. Как мы видим, в методе get_response реализуется логика обработки исключения. Надеюсь я облегчил жизнь людям, которые блуждают в поиске статьи по организации страницы 404 ошибки в Kohana. Огромное спасибо за внимание!
ссылка на оригинал статьи http://habrahabr.ru/post/164071/
Добавить комментарий