Kohana3 - 错误模板,如果错误= FALSE

时间:2010-07-11 12:04:07

标签: model-view-controller kohana kohana-3 php

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

现在,如果某人正在调用Url,可能是:/ notexist,并且没有action_notexist(),则该网站为空。

我的问题:我如何创建一个主要的错误模板,应该加载而不是白页。例如。如果您致电:http://twitter.com/notexistinguser,则“页面不存在”错误,与Kohana3相同?

谢谢:)

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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可能有一个特殊的例外处理响应,但现在你可以使用我的解决方案。

希望能帮到你。

答案 2 :(得分: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;

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