讨论 技术讨论 ModStartBlog前后台web端如何显示不同的404页面?

ModStartBlog前后台web端如何显示不同的404页面?

sigool 发表于    阅读:65    回复:1

问题描述:

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文件不就达成目的了。

评论
Alan 个人开发者

厉害

 
1
我来评论
QQ
微信
客服