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\fr
if ($router->isTest()) {
$this->buildResourceRule();
}点开isTest方法,看到了有一个检查路由是否为测试模式的东西,后来通过再调试,看到在普通的get路由注册里面,也就是vendor\topthink\fr
测试:我将Resource.php中的88行,手动设置测试模式为真
$this->router->setTestMode(true);然后测试结果成功
可以通过url助手函数生成路由了.
猜想:这个测试模式应该在console使用的,使用php think时才会将isTest设置为真
但,在资源路由注册时,不知道官方是否考虑到自己没有将资源路由进行规则注册呢?
还是我理解不到位
最佳答案