0

在我的 Bootstrap.php 中,我已经停用了 Profiler(或者激活它更好?)和错误。

现在,如果有人正在调用 URL,可能是:/notexist,并且没有 action_notexist(),则站点为空白。

我的问题:如何创建一个应该加载而不是白页的主错误模板。例如,如果你调用: http: //twitter.com/notexistinguser,会出现“页面不存在”的错误,与 Kohana3 一样吗?

谢谢 :)

4

3 回答 3

2

不要忽略异常,抓住它们。

于 2010-07-11T19:42:33.477 回答
1

您需要做的是在bootstrap.php文件中捕获Kohana_Exception 。这是我的一个项目的代码示例。

try
{
    echo Request::instance()
        ->execute()
        ->send_headers()
        ->response;
}
catch (Kohana_Exception $e)
{
    echo Request::factory('static/404')->execute()->send_headers()->response;
}

我将解释这里发生了什么。如果请求的 URL 不存在路由,则会引发Request_Exception (Kohana_Exception 的实例)。

然后,我使用 HMVC 功能创建对 404 页面的子请求,该页面处理模板、状态代码、日志记录和错误消息。

将来 Kohana 可能会有一个处理响应的特殊例外,但现在你可以使用我的解决方案。

希望对您有所帮助。

于 2010-07-13T01:21:03.660 回答
1

我是 Kohana 的新手,但我使用以下技术。首先,定义一些常量,例如 IN_PRODUCTION:

define('IN_PRODUCTION', true);

其次,创建新的Exception类,例如继承Kohana_Exception的 Exception_404 。三、替换这段代码:

echo Request::instance()
->execute()
->send_headers()
->response;

有以下内容:

$request = Request::instance();
try 
{
    $request->execute();
}
catch(Exception_404 $e)
{
    if ( ! IN_PRODUCTION)
    {
        throw $e;
    }

    //404 Not Found
    $request->status = 404;
    $request->response = View::factory('404');
}

print $request->send_headers()->response;

现在您有了自己的错误模板。那是你要的吗?

于 2010-07-15T10:54:45.940 回答