我为位于文件夹views/errors
中的Laravel安装创建了一个默认错误页面。
在同一文件夹中,我还有其他错误页面,例如404.blade.php
,503.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);
}
使用此选项,当发生错误且错误页面不存在时,我将用户重定向到常规错误页面。
问题是它不起作用。所有其他错误页面工作正常。发生其他错误时,我会得到
“糟糕,看起来好像出了点问题”。
答案 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一样正常工作,而我没有自定义错误页面的所有其他错误都可以重定向到常规页面