在我的Bootstrap.php中,我已经停用了Profiler(或者它是否更好被激活?)和错误。
现在,如果某人正在调用Url,可能是:/ notexist,并且没有action_notexist(),则该网站为空。
我的问题:我如何创建一个主要的错误模板,应该加载而不是白页。例如。如果您致电:http://twitter.com/notexistinguser,则“页面不存在”错误,与Kohana3相同?
谢谢:)
答案 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;
现在您有了自己的错误模板。这就是你想要的吗?