Exception handling 如何在Kohana 3.0中自定义错误页

Exception handling 如何在Kohana 3.0中自定义错误页,exception-handling,error-handling,custom-error-pages,kohana-3.0,Exception Handling,Error Handling,Custom Error Pages,Kohana 3.0,我一直在试图找到一个关于如何在Kohana 3.0中定制错误页面的完整解释,到目前为止我还不走运。那么,根据我们提供的解决方案,有人能告诉我怎么做吗 当我说完整的解释时,我的意思是,类的位置,它们的名称,要扩展的类,完整的代码,以及其中一个错误的视图 非常感谢。我建议你读一读。您可以根据类名和Kohana自动加载的方式,计算出需要为自己创建的文件。对我来说,Kohana的美妙之处在于它没有尝试为你做任何事情,因此在我看来,阅读文档非常重要 注意:我没有特别使用Kohana 3.0,但这应该适用

我一直在试图找到一个关于如何在Kohana 3.0中定制错误页面的完整解释,到目前为止我还不走运。那么,根据我们提供的解决方案,有人能告诉我怎么做吗

当我说完整的解释时,我的意思是,类的位置,它们的名称,要扩展的类,完整的代码,以及其中一个错误的视图

非常感谢。

我建议你读一读。您可以根据类名和Kohana自动加载的方式,计算出需要为自己创建的文件。对我来说,Kohana的美妙之处在于它没有尝试为你做任何事情,因此在我看来,阅读文档非常重要

注意:我没有特别使用Kohana 3.0,但这应该适用

例如,在部分1中,以下代码是:

<?php defined('SYSPATH') or die('No direct access');

class HTTP_Response_Exception extends Kohana_Exception {}
所示的将添加到您的应用程序引导程序中,该引导程序位于

application/bootstrap.php

当出现错误时,您可以知道控制器将是什么:

Route::set('error', 'error/<action>(/<message>)', array('action' => '[0-9]++', 'message' => '.+'))
->defaults(array(
    'controller' => 'error_handler'
));
Route::set('error','error/创建于:

应用程序/类/控制器/错误处理程序.php

这将看起来像:

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Error_Handler extends Controller_Template {

    ...

    public function action_404()
    {
        $this->template->title = '404 Not Found';
        // A view example
        $view = View::factory('error/404');
        $view->render();
        ...
    }
}
我建议您阅读。您可以根据类名和Kohana自动加载的方式,计算出需要为自己创建的文件。Kohana对我来说的美妙之处在于它没有尝试为您做任何事情,因此,在我看来,阅读文档非常重要

注意:我没有特别使用Kohana 3.0,但这应该适用

例如,在部分1中,以下代码是:

<?php defined('SYSPATH') or die('No direct access');

class HTTP_Response_Exception extends Kohana_Exception {}
所示的将添加到您的应用程序引导程序中,该引导程序位于

application/bootstrap.php

当出现错误时,您可以知道控制器将是什么:

Route::set('error', 'error/<action>(/<message>)', array('action' => '[0-9]++', 'message' => '.+'))
->defaults(array(
    'controller' => 'error_handler'
));
Route::set('error','error/创建于:

应用程序/类/控制器/错误处理程序.php

这将看起来像:

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Error_Handler extends Controller_Template {

    ...

    public function action_404()
    {
        $this->template->title = '404 Not Found';
        // A view example
        $view = View::factory('error/404');
        $view->render();
        ...
    }
}

我不太明白这个问题,但控制器(错误处理程序)是在创建的路由中指定的,可以命名为任何名称。此处所做的只是扩展Kohana异常类,然后将错误路由到控制器。控制器与异常类完全无关。编辑问题:)控制器
class Kohana\u Kohana\u Exception extensed Exception
中的方法与将在application/classes/Kohana/Exception.php中覆盖它的方法具有不同的名称。前一个命名的处理程序和后一个异常处理程序。我遵循它对吗?如果我相应地更改名称并放置一些
echo
证明o正在工作,但我不知道如何渲染视图。正在发生的是一个php错误视图,而不是kohana自定义渲染视图。谢谢。这取决于模板控制器。我已经更新了示例控制器,以便以一种应能与kohana一起使用的方式渲染视图:)我不太明白这个问题,但控制器(Error_Handler)是在创建的路由中指定的,可以命名为任何名称。这里要做的就是扩展Kohana异常类,然后将错误路由到控制器。控制器与异常类完全无关。编辑问题:)控制器
类Kohana_Kohana_exception extensed exception
中的方法与将在application/classes/Kohana/exception.php中覆盖它的方法具有不同的名称。前一个命名处理程序和后一个异常处理程序。我明白了吗?如果我相应地更改名称,并放置一些
echo
,结果证明是有效的,但我不知道如何渲染视图。发生的是一个php错误视图,而不是kohana自定义呈现视图。谢谢。这取决于模板控制器。我已经更新了示例控制器,以使视图的渲染方式应与Kohana开箱即用:)