Php 如何为ModelNotFoundException laravel显示404
我正在尝试在Laravel中设置一个智能错误捕获系统,这样我就可以为每个错误定义一个视图,而不是传统的“这里出了问题”消息,并关闭调试。我已经成功捕获了典型的http头,比如404、403、405和500,但是现在我希望捕获ModelNotFoundException并简单地返回404。以下是到目前为止我得到的信息:Php 如何为ModelNotFoundException laravel显示404,php,laravel,Php,Laravel,我正在尝试在Laravel中设置一个智能错误捕获系统,这样我就可以为每个错误定义一个视图,而不是传统的“这里出了问题”消息,并关闭调试。我已经成功捕获了典型的http头,比如404、403、405和500,但是现在我希望捕获ModelNotFoundException并简单地返回404。以下是到目前为止我得到的信息: App::error(function(Exception $e, $code) { $error = ['code' => $code]; switch($co
App::error(function(Exception $e, $code) {
$error = ['code' => $code];
switch($code) {
case 403:
return Response::view('errors.error', $error, $code);
break;
case 404:
return Response::view('errors.error', $error, $code);
break;
case 405:
return Response::view('errors.error', $error, $code);
break;
case 500:
return Response::view('errors.error', $error, $code);
break;
default:
return;
break;
}
/*
| Returns null if the error is not 401, 403, 404, 500, 405
| I just have a default of null in the switch on $code.
if(!in_array($code, [401, 403, 404, 500, 405])) {
return;
}
*/
});
App::error(function(ModelNotFoundException $e) {
return Response::view('errors.error', ['code' => 404], 404);
});
现在检测403、404、405、500报头工作得很完美,但是当我添加另一个App::error来侦听ModelNotFoundException时,所有操作都失败了。对于每个异常,我都返回null。默认情况下,ModelNotFoundException抛出一个500头,这就是我的视图中显示的内容。我希望它是404
TL;博士
- 我希望ModelNotFoundException抛出404而不是500
\Illuminate\Database\Eloquent\ModelNotFoundException
首先,在views/errors目录中需要一个404.blade.php文件。以下是如何在发生ModelNotFoundException时引发404错误: Laravel 4
在app/start/global.php中 Laravel 5.0和5.1
将此代码添加到/app/exceptions/handler.php中的
render()
方法:
Laravel 5.2+发生ModelNotFound异常时,将自动返回404错误
App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $exception, $code)
{
return Response::view('errors.404', array(), 404);
});
if ($e instanceof \Illuminate\Database\Eloquent\ModelNotFoundException) {
return response()->view('errors.404', array(), 404);
}