Php Laravel-所有可能错误的一个视图

Php Laravel-所有可能错误的一个视图,php,laravel,error-handling,Php,Laravel,Error Handling,所以我想用一个视图涵盖所有可能的和意外的错误(比如401404500)。我希望在所有可能的错误上显示相同的视图。我想出了一个解决方案——复制/粘贴相同的代码,并用不同的错误代码命名视图。但这似乎是僵硬和错误的。有更好的方法来实现这一点吗?将错误代码传递给处理程序上的视图,并在页面上显示代码,使用开关根据错误代码处理所有消息。您可以创建一个唯一的视图(默认为404错误),在代码中使用try-catch捕获其他错误,并使用参数调用此视图,以便将404默认错误更改为其他错误。实现此效果的更简洁的方法是

所以我想用一个视图涵盖所有可能的和意外的错误(比如401404500)。我希望在所有可能的错误上显示相同的视图。我想出了一个解决方案——复制/粘贴相同的代码,并用不同的错误代码命名视图。但这似乎是僵硬和错误的。有更好的方法来实现这一点吗?

将错误代码传递给处理程序上的视图,并在页面上显示代码,使用开关根据错误代码处理所有消息。

您可以创建一个唯一的视图(默认为404错误),在代码中使用try-catch捕获其他错误,并使用参数调用此视图,以便将404默认错误更改为其他错误。

实现此效果的更简洁的方法是修改

修改
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);
}

可能需要进行一些定制,以完全满足您希望数据传递到共享自定义视图的内容和方式。

在文件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等