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 行为不端

iOS 中的 MIDI 合成行为不端 WRT 弯音:忽略 LSB

没有显式宽度限制且尾随空间大于或等于行为不端的自动布局

Ajax 调用使 jQuery 代码行为不端并破坏布局

为啥 string::substr 行为不端?