如何禁用 Laravel 5.4 的默认错误处理程序

5

我目前正在进行一个Laravel项目。我需要将所有错误页面重定向到404页面未找到页面。

public function render($request, Exception $exception)
        {
            if ($this->isHttpException($exception)) {
                switch ($exception->getStatusCode()) {

                        // not authorized
                        case '403':
                                return \Response::view('404',array(),403);
                                break;

                        // not found
                        case '404':
                                return \Response::view('404',array(),404);
                                break;

                        // internal error
                        case '500':
                                return \Response::view('404',array(),500);
                                break;

                        default:
                                return $this->renderHttpException($exception);
                                break;
                }
        } else {
                return parent::render($request, $exception);
        }



                return parent::render($request, $exception);
        }

有没有办法将错误页面重定向到404页面?此代码(当验证错误发生时重定向到404)中也没有显示验证错误。我正在使用5.4版本。

你尝试过这种方法吗?返回 abort(404); - Mayank Majithia
1
感谢您的评论。已经检查过了。 - Aneesh Ajithkumar
4个回答

6

这是关于 Laravel 5.4 的一个 Bug,已经在 Laravel 5.5 中进行了修改。

https://github.com/laravel/framework/pull/18481

修改的文件为 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php。

if (! $this->isHttpException($e) && config('app.debug')) {
        return $this->toIlluminateResponse($this->convertExceptionToResponse($e), $e);
    }
    if (! $this->isHttpException($e)) {
       return \Response::view('404',array(),500);
    }
    return $this->toIlluminateResponse($this->renderHttpException($e), $e);

欢迎 @AneeshAjithkumar - Anandu Krishna

2
怎么样:
if ($this->isHttpException($exception)) {
    abort(404);
}

1
resources/views/errors目录下创建一个文件夹。
在该目录下创建以下文件: 404.blade.php:用于404错误。 500.blade.php:用于400错误。 403.blade.php:用于403错误。
这些视图将自动呈现。如果要中止应用程序,可以使用abort(404)
希望这能帮到你。

已经像你描述的那样在我的项目中添加了这些刀片,但页面上没有显示验证错误。 - Aneesh Ajithkumar
请确保您的Web路由在web中间件中。 - PULL STACK DEV

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接