采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
当多应用模式下 Error.php文件应该放置在什么地方? 如果能够做到一个Error.php文件作用于全部应用呢?
如果是多应用模式下 Error.php文件是需要在对应的模块下面定义。
1、代码定位到 /think/route/dispatch/Controller.php 文件中的 controller 方法
2、可以看到当控制器不存在就会走到 elseif 中的控制器
比如请求的地址是 www.tp6.com, 那么返回的就是 app\controller\Error
如果请求的地址是 www.tp6.com/admin那么返回的就是 app\admin\controller\Error对应其他也是如此。
那么如果要定义一个公共的Error文件就需要一个固定的文件地址。
比如我下面修改的代码
1、在config加入配置项
2、修改源代码 可以还有更好的方式但是我目前想到的就是这样的。
这样配置的话不管是哪个模块都会对应到common/controller/Errro.php文件中。
赞 赞 赞。
十分感谢 我按你的方式去检查 问题解决了 主要原因是: 1.route.php配置文件中开启了使用控制器后缀 所以我的Error.php文件 应该改名为 ErrorController.php 就可以了
嗯呢,大体的思路是这个样子,还有优化的空间,你可以根据自己的需求来设置。
Error.php是指异常处理的文件吗,如果是的话,全局异常处理类在app目录下的provider.php文件的'think\exception\Handle'参数指定异常处理类;
如果是多应用每个模式下的异常处理类,比如你admin模块,那你就在admin目录下创建一个provider.php文件指定'think\exception\Handle',同理如果是api模块,就在api目录下定义provider.php文件;
provider.php文件有优先级,如果模块下没定义会自动使用app下的,如果模块目录下有定义,那会使用模块里面定义的。
经过测试,在多应用模式下,在app\controller\Error.php任然能够给生效(在没有更改源码的情况下)
多应用下也可以显示,只要把erroe.php放到当前模块下的controller目录下,修改正确的命名空间即可
采纳的才是正解
登录后可查看更多问答,登录/注册
一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目
1.8k 19
1.4k 19
4.6k 16
1.6k 16
1.4k 16