Laravel —— 自定义 404 处理方式
Laravel 有自己的 404 处理方式及对应的页面
大多项目中都需要定义自己的 404 页面
有些时候 404 页面中有动态数据
本篇文章的使用 Laravel 9
一、自定义 404 页面
方案一、在 resources/views/errors/ 创建 404.blade.php 文件,
方案二、用命令发布模板,php artisan vendor:publish --tag=laravel-errors
再次访问不存在的路由时,就会显示自己定义的 404 内容。
二、404 添加动态数据
框架的异常处理都在 app/Exceptions/Handler.php 中。
继承了 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php 文件。
方案一、重写异常处理方法
找到渲染异常的方法,并重写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; // 状态为 404 时。把 data 渲染到 404 页面 // 其他状态,按照自带的逻辑处理 public function render( $request , Throwable $e ) { if ( $e instanceof NotFoundHttpException) { if (view()->exists( $view = 'errors.404' )) { return response()->view( $view , [ 'data' => 'test' , ], $e ->getStatusCode(), $e ->getHeaders()); } } return parent::render( $request , $e ); } |
方案二、注册自定义的渲染闭包
在 register 方法中,添加自定义 404 渲染
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; public function register() { $this ->reportable( function (Throwable $e ) { // }); $this ->renderable( function (NotFoundHttpException $e , $request ) { if (view()->exists( $view = 'errors.404' )) { return response()->view( $view , [ 'data' => 'test' , ], $e ->getStatusCode(), $e ->getHeaders()); } }); } |
再次访问不存在的路由,动态数据可以在 404 页面显示出来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix