Laravel 5.5资源控制器行为不端
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.5资源控制器行为不端相关的知识,希望对你有一定的参考价值。
我使用--resource命令创建了UserController。
现在,我有两条路线。
Route::get('user/{id}', 'UserController@show');
Route::get('user/certificate', 'UserController@showUserCertificate');
由于我没有使用Route :: resource方法,官方文档称调用第二条路径不应该触发第一条路径。但在我的情况下,这并没有发生。
OD也说明了订单,任何路线而不是资源都应该在那之前申报。我也试过了。它仍然需要我显示方法而不是showUserCertificate方法。我在这里错过了什么?
当然,它总是击中show
路线。它是匹配您请求的URI的第一个路由...您在该路由中定义了一个路由参数,因此它匹配以user
开头并且有一个额外段的任何内容。
user/blah
user/anything
user/certificate
所有这些都匹配user/{id}
。匹配的第一条路线是使用的路线。颠倒这两条路线的顺序,以便更具体的路线首先。
更新:您需要升级框架。在与路由排序相关的确切版本中引入了一个错误。 5.5.8修复它。 Reference to GitHub PR to revert change
是的在这种情况下,每次调用第二条路线时都会调用第一条路线。第二个路由中的证书将被视为第一个控制器中的{id}。如果它是正确的,请投票给我答案
Route::get('user/{id}', 'UserController@show');
Route::get('user/certificate', 'UserController@showUserCertificate');
//你可以把它改成Route :: get('user / certificate / {id}','UserController @ showUserCertificate');
以上是关于Laravel 5.5资源控制器行为不端的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 5.5 中将数组作为 API 资源返回
在 iOS7 中使用 UISearchBar 将子视图添加到 tableHeaderView 行为不端