我正在使用kohana 3.2和kohana-error模块工作正常,当页面不存在时。 但我有这种情况:页面存在,但没有数据来,因为数据不存在。我正在使用route param来检查数据库。
所以我这样做了,
if($response )
{
return $response;
} else {
throw new HTTP_Exception_404('Page Not Found');
}
如果有数据返回,如果没有,则创建一个'找不到页面'并且我将它用kohana-error模块捕获它但它不是.... 那可能吗?这是正确的方法吗?
答案 0 :(得分:0)
在index.php
中,您可以执行以下操作:
$request = Request::factory();
try
{
$response = $request->execute();
if (!$response->body())
{
throw new HTTP_Exception_404();
}
}
catch (Exception $exc)
{
if ($exc instanceof HTTP_Exception_404)
{
$response = Request::factory('your/404error/controller')->execute();
}
else
{
// rethrow exception
throw $exc;
}
}
echo
$response
->send_headers()
->body();
这样,您可以为每个HTTP异常执行一个控制器,或者您可以使用catch all 404页面来处理所有异常(50x和40x错误)