所以我想用一个视图来涵盖所有可能的和意外的错误(如401,404,500)。我希望相同的视图能够显示所有可能的错误。我提出了一个解决方案 - 复制/粘贴相同的代码,并使用不同的错误代码命名视图。但这似乎是僵硬和错误的。有没有更好的方法来实现这一目标?
答案 0 :(得分:3)
在文件 app / Exceptions / Handler.php 中,您可以更改抛出异常时发生的情况。特别是那里有一个render
方法,您可以使用它来捕获应用程序中的所有异常。
public function render($request, Exception $e)
{
// Handle your error here. Perhaps you can show a view
// when a condition is met. Anything that isn't caught
// here will be handled by Laravel with the
// parent::render call below
return parent::render($request, $e);
}
parent::render($request, $e)
是Laravel通常会显示异常/ oops页面的地方。因此,通过重写此方法,您可以捕获所有应用程序错误,包括404,401等。
答案 1 :(得分:1)
实现此效果的更简洁方法是修改Laravel's exception handler。
修改App\Exceptions\Handler
以捕获每个错误并返回您的共享自定义错误页面。
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
if ($e instanceof NotFoundHttpException) {
return response()->view('errors.custom', [], 404);
}
return parent::render($request, $e);
}
可能需要进行一些定制才能完全满足&您希望如何将数据传递到共享自定义视图。
答案 2 :(得分:-1)
将错误代码传递给处理程序上的视图,并在页面上显示代码,使用开关根据错误代码处理所有消息。
答案 3 :(得分:-1)
您可以创建一个唯一视图(默认为404错误),在代码中使用try catch捕获其他错误并使用参数调用此视图,这样您就可以将404默认错误更改为其他错误。