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

时间:2016-07-29 08:15:22

标签: php laravel error-handling

所以我想用一个视图来涵盖所有可能的和意外的错误(如401,404,500)。我希望相同的视图能够显示所有可能的错误。我提出了一个解决方案 - 复制/粘贴相同的代码,并使用不同的错误代码命名视图。但这似乎是僵硬和错误的。有没有更好的方法来实现这一目标?

4 个答案:

答案 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默认错误更改为其他错误。