关于tp6.0.8资源路由url生成的问题探索

浏览:685 发布日期:2021/07/04 分类:ThinkPHP6专区 关键字: thinkphp 资源路由
问题:在route/app.php中添加如下规则Route::resource('user','User');官方文档说,自动注册了7个路由,包含一个user/:id/edit的路由
于是想应该可以通过url函数生成/user/2/edit.html的路由
如下:return url('User/edit', ['id' => 2])但是,却得到的是
/User/edit.html?id=2
下面开始研究源码
1. 我发现使用Route::get注册的路由,是可以使用url生成这样的路由的
2.查看Route::resouce注册的源代码,发现了,在vendor\topthink\framework\src\think\route\Resource.php中的第89行,发现了if ($router->isTest()) {
            $this->buildResourceRule();
        }
点开isTest方法,看到了有一个检查路由是否为测试模式的东西,后来通过再调试,看到在普通的get路由注册里面,也就是
vendor\topthink\framework\src\think\Route.php中的第512行的rule方法的最后一行,直接运行了addRule方法,而资源路由中,则要先判断是测试模式,才进行addRule方法
测试:我将Resource.php中的88行,手动设置测试模式为真$this->router->setTestMode(true);然后测试
结果成功
可以通过url助手函数生成路由了.
猜想:这个测试模式应该在console使用的,使用php think时才会将isTest设置为真
但,在资源路由注册时,不知道官方是否考虑到自己没有将资源路由进行规则注册呢?
还是我理解不到位
最佳答案
评论( 相关
后面还有条评论,点击查看>>