Пользовательская страница Kohana 404

Я искал и следил за каждым уроком, есть один, который выделяется. http://blog.lysender.com/2011/02/kohana-3-1-migration-custom-error-pages/ ‹-- я следовал этому руководству, и все прошло гладко

  1. ошибка обнаруживается
  2. исключение обрабатывается

но было исключение, которое я не могу найти. у меня сейчас есть это исключение

Fatal error: Exception thrown without a stack frame in Unknown on line 0

все мои коды совпадают со ссылкой на сайт. пожалуйста, помогите мне .. я постоянно беспокоюсь об этом, я также просмотрел здесь Kohana 3 - перенаправление на страницу 404, но так как я новичок, это действительно сложно понять. Я также узнал, что есть серьезное обновление с KO 3.0 до 3.1, как насчет KO 3.2? Спасибо за помощь ребята :)


person Gian Santillan    schedule 12.06.2012    source источник
comment
Прочтите руководство по этому сообщению об ошибке: php.net/manual/en /function.set-exception-handler.php — Спасибо!   -  person hakre    schedule 12.06.2012


Ответы (2)


Из исходного кода kohana.

- > If you receive *Fatal error: Exception thrown without a stack frame in Unknown on line 0*, it means there was an error within your exception handler. If using the example above, be sure *404.php* exists under */application/views/error/*.

Может быть, это помогает. Вероятно, это было исправлено, но я не особо слежу за развитием коханы. Это связано с запросом на включение № 246: https://github.com/kohana/core/pull/246 и это источник: https://github.com/kohana/core/pull/246/files#L208L76

person hakre    schedule 12.06.2012

вот как я это делаю с Kohana 3.2

  • Добавьте средства обработки исключений в index.php.
    try
    {
        $request = $request->execute();
    }
    catch(Kohana_HTTP_Exception_404 $e)
    {
        $request = Request::factory('errors/404')->execute();
    }
    catch(Exception $e)
    {
        $request = Request::factory('errors/500')->execute();
    }

    echo $request->send_headers()->body();
  • Затем напишите контроллер ошибок
class Controller_Errors extends Controller
{
    public function __construct($request, $response)
    {
        parent::__construct($request, $response);
    }

    public function action_404()
    {
        $this->response->body(View::factory('errors/404'));
    }

    public function action_500()
    {
        $this->response->body(View::factory('errors/500'));
    }
}
  • Создайте 2 соответствующие страницы ошибок (404.php и 500.php в представлениях/ошибках)

  • Добавьте новый маршрут в ваш bootstrap.php или используйте маршрут по умолчанию (зависит от структуры вашего проекта), просто убедитесь, что Controller_Errors может быть достигнут при возникновении исключения

  • Теперь каждый раз, когда вы создаете исключение в своем контроллере, он будет отображать пользовательскую страницу ошибки, например эту.
throw new HTTP_Exception_404;
person Nam Dau    schedule 08.09.2012