【问题标题】:Kohana3 - Error Template if errors = FALSEKohana3 - 如果错误 = FALSE,则错误模板
【发布时间】:2010-07-11 12:04:07
【问题描述】:

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

现在如果有人调用一个 Url,可能是:/notexist,并且没有 action_notexist(),则站点是空白的。

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

谢谢:)

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    您需要做的是在您的 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 可能会有一个处理响应的特殊例外,但现在你可以使用我的解决方案。

    希望对你有所帮助。

    【讨论】:

    • 一个有趣的方法,我会尝试...这是引导程序的结束行?我对吗?谢谢
    【解决方案3】:

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

    define('IN_PRODUCTION', true);
    

    其次,创建新的异常类,例如继承Kohana_ExceptionException_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;
    

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

    【讨论】:

    • 没有必要创建 IN_PRODUCTION 因为 Kohana 有一个 Kohana::$ 环境变量。这可以与常量 Kohana::PRODUCTION、Kohana::STAGING 和 Kohana::DEVELOPMENT 结合使用
    猜你喜欢
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2021-12-08
    • 2011-07-12
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多