Laravel 路线冲突

Laravel routes collision

我正在尝试构建一个简单的 CRUD 应用程序,但我遇到了一些关于路由的问题。要查看群组,我有以下路线

Route::get('/groups/{id}','GroupsController@show');

并用于创建

Route::get('/groups/create','GroupsController@create')->name("groups.create");

问题是上面定义的路由 create 模块不工作,但是当我注释掉 /routes/{id} 路由时它会工作。

非常感谢任何解决此问题的帮助。

这完全取决于您定义它们的顺序,所以将创建路由放在通配符路由之前就可以了。

  • 首先,您不应该通过 GET 请求进行任何创建。最好改用 POST
  • 其次 - 它是排序的,因为 {id} - 在你的情况下是任何字符串。 (create - 也是字符串...)因此您可以在 {id}.
  • 之前移动 create 路线
  • 第三 - 如果 id 只是数字,请添加说明,例如 Route::get('/groups/create','GroupsController@create')->name("groups.create")->where(['id' => '[0-9]+');

此解决方案中的任何一个都可以解决您的问题。但最好改变这一切。