laravel 框架配置404等异常页面

18次阅读

共计 1112 个字符,预计需要花费 3 分钟才能阅读完成。

在 Laravel 中所有的异常都由 Handler 类处理,该类包含两个方法:report 和 render,其中 render 方法将异常渲染到 http 响应中。laravel 的 Handler 类文件位置:app/Exceptions/Handler, 由于 render 方法时间异常渲染到 http 响应中,所以我们只需要修改下 render 方法即可网上很多的方法是将 render 方法修改成:
public function render($request, Exception $exception)
{
if ($exception) {
return response()->view(‘error.’.$exception->getStatusCode(), [],$exception->getStatusCode());
}
return parent::render($request, $exception);
}

这时候你的测试可能是没有问题的,但是如果你如果写了登录的方法的话,这时候如果你访问必须要登录的页面的时候,这时候会报错

这是由于如果你访问了必须要登录的页面的时候,这时候就会进入 app/Exceptions/Handler.php 的 render 方法,这时候 $exception->getStatusCode() 是不存在的,这时候就会报错了,那么如何解决呢?
这时候我们找到 parent::render 的方法所在:

这时候我们发现原来 laravel 框架已经将我们的这种情况包含进去了,那么我们就可以即将上面的方法改为:
public function render($request, Exception $exception)
{
if (!($exception instanceof AuthenticationException)) {
return response()->view(‘error.’.$exception->getStatusCode(), [],$exception->getStatusCode());
}
return parent::render($request, $exception);
}

这时候就完美解决了这个问题然后在 resources/view/error/ 下面新建错误页面,错误页面的命名为:{errorcode}..balde.php, 其中的 errorcode 为错误码,例如 404..balde.php
配置完成后访问一个不存在的路由时即可跳转到你配置的 404 页面
作者:huaweichenai 来源:www.wj0511.com 原文:https://www.wj0511.com/site/d… 版权声明:本文为博主原创文章,转载请附上博文链接!

正文完
 0