2012-06-12 2 views
0

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

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

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

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

все мои коды являются теми же, что и на сайте-ссылке. пожалуйста, помогите мне .. im bugging around for this since ever, я просмотрел здесь также Kohana 3 - redirect to 404 page, но так как я начинающий, его действительно трудно понять это. Я также узнал, что есть большой пересмотр от KO 3.0 до 3.1, как насчет KO 3.2? Спасибо за помощь ребятам :)

+0

Пожалуйста, прочитайте инструкцию о том, что сообщение об ошибке: http://php.net/manual/en/function.set-exception-handler.php - Спасибо! – hakre

ответ

1

От исходного кода коханы.

- > 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

1

вот как я это делаю с 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;