
laravel 默认为不同 http 状态码(如 404、500)分别加载对应视图,本文介绍如何通过重写 `gethttpexceptionview()` 方法,让所有错误状态码复用同一套视图模板,同时保留原始状态码与错误消息,实现简洁、可控的错误页面统一管理。
在 Laravel 中,当抛出 HttpException(例如通过 abort(403, 'Forbidden'))时,框架会调用异常处理器中的 getHttpExceptionView() 方法来决定渲染哪个 Blade 视图。该方法默认根据状态码查找 resources/views/errors/403.blade.php 等路径。要实现「所有错误状态码共用一个视图」,我们只需在 App\Exceptions\Handler 类中覆盖此方法,返回统一的视图路径即可。
✅ 正确做法如下(Laravel 8.x+):
// app/Exceptions/Handler.php
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
protected function getHttpExceptionView($e)
{
// 始终返回同一个自定义视图(支持子目录,如 'errors.generic' → resources/views/errors/generic.blade.php)
return 'errors.generic';
}然后创建你的通用错误视图:
{{-- resources/views/errors/generic.blade.php --}}
{{ $exception->getStatusCode() }} Error
{{ $exception->getStatusCode() }}
{{-- 可选:显示更详细的调试信息(仅本地环境启用) --}}
@env('local')
Debug info
{{ json_encode([
'class' => get_class($exception),
'code' => $exception->getCode(),
'file' => $exception->getFile(),
'line' => $exception->getLine()
], JSON_PRETTY_PRINT) }}
ails>
@endenv
相关文章
PHP接收不到跨域请求怎么办_解决CORS跨域接收问题指南【说明】
VSC里PHP输出中文乱码怎么处理_编码统一技巧【方法】
如何使用 Axios 发送数组数据并在 PHP 中正确接收与合并
Laravel Artisan 命令执行失败:PHP 版本不兼容问题详解
php本地环境如何配置伪静态_url重写规则设置方法【教程】
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
更多










