QQ扫一扫联系
ModStartBlog前后台如何显示不同的404页面?
用的是: ModStartBlog 稳定版 v10.0.0 PHP:7.0.9 版本
在web端404异常的时候,laravel默认渲染 resources/views/errors/404.blade.php 这个模板文件。modstart blog系统也遵循这个原则,打开这个404 blade文件,可以看到里面只写了
@include('modstart::core.msg.404')
这一段代码。这个代码意思引入modstart系统内置给我们的404视图文件(vendor/modstart/modstart/views/core/msg/404.blade.php)
所以我们想前后台web端显示不同的效果,就要在 resources/views/errors/404.blade.php 文件里通过判断展示不同的页面内容。
访问后台页面目的,不存在的URL时:
我这后台不是/admin开头的是/admin_256开头的,因为我设置过的。当访问前台页面意图,但是URL不存在时:
显示了自己构造的404页面(其实是AI写的。。。)
其实如果你觉得不优雅可以写在app/Exceptions/Handler.php文件里的,因为laravel异常代码处理机制就是走的这个文件的。
这个文件里的render方法就是比如404错误代码渲染响应相关的逻辑,响应的时候就会走到这个方法。
我们看下它return调用的
parent::render($request, $e)
可以看到404就是http exception,所以执行的是
$this->renderHttpException($e)
我们再点进去看
可以看到404,其实渲染的就是errors.404,那不就是刚才一直说的resources/views/errors/404.blade.php 这个文件吗?
所以想优雅就在app/Exceptions/Handler.php这个文件,重写
protected function renderHttpException(HttpException $e)
这个方法好了,具体逻辑实现就是刚才说的 ,404时候,判断是否前后台,然后我们可以根据前后台显示不同的blade文件不就达成目的了。
厉害