Laravel 5.3如何重定向到默认错误页面

时间:2019-02-14 10:53:34

标签: php laravel error-handling

我为位于文件夹views/errors中的Laravel安装创建了一个默认错误页面。

在同一文件夹中,我还有其他错误页面,例如404.blade.php503.blade.php

对于已经存在的pages/errors,例如找不到404错误。

我希望所有其他错误将用户重定向到位于同一文件夹view/errors/general.blade.php中的默认错误页面

我在renderHttpException上覆盖了功能app/Exceptions/Handler.php

protected function renderHttpException(HttpException $e)
{
   if (! view()->exists("errors.{$e->getStatusCode()}")) {
      return response()->view('errors.general', ['exception' => $e], 500,    
      $e->getHeaders());
   }
    return parent::renderHttpException($e);
 }

使用此选项,当发生错误且错误页面不存在时,我将用户重定向到常规错误页面。

问题是它不起作用。所有其他错误页面工作正常。发生其他错误时,我会得到

  

“糟糕,看起来好像出了点问题”。

4 个答案:

答案 0 :(得分:2)

在laravel中使用abort函数,如下所示,并传递HTTP异常代码:

abort(404,'Page not found.');

它将重定向到以下位置的文件:

resources/views/errors/404.blade.php

答案 1 :(得分:1)

编辑:

在laravel中,您可以转到App/Exceptions/Handler.php,然后可以在底部编辑渲染功能以使用自定义视图。

public function render($request, Exception $e)
{
    return view('somview');
}

答案 2 :(得分:0)

在您的处理程序上(app / Exceptions / Handler.php) 您可以重定向到默认视图:

public function render($request, Exception $exception){
    if ($exception) {
            return response()->view('errors.custom',);
        }
}

您还需要在此处处理HTTP错误,因此它将重定向到另一个页面,但其他错误将重定向到自定义页面。

答案 3 :(得分:0)

这种解决方案至少对我有用。 在app / Exceptions / Handler.php中编辑功能渲染

并添加以下代码:

        if ($exception instanceof \ErrorException) {
             return response()->view("errors.general");
        }

现在所有自定义错误都可以像404一样正常工作,而我没有自定义错误页面的所有其他错误都可以重定向到常规页面

相关问题