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]+');
此解决方案中的任何一个都可以解决您的问题。但最好改变这一切。
我正在尝试构建一个简单的 CRUD 应用程序,但我遇到了一些关于路由的问题。要查看群组,我有以下路线
Route::get('/groups/{id}','GroupsController@show');
并用于创建
Route::get('/groups/create','GroupsController@create')->name("groups.create");
问题是上面定义的路由 create
模块不工作,但是当我注释掉 /routes/{id}
路由时它会工作。
非常感谢任何解决此问题的帮助。
这完全取决于您定义它们的顺序,所以将创建路由放在通配符路由之前就可以了。
- 首先,您不应该通过
GET
请求进行任何创建。最好改用POST
。 - 其次 - 它是排序的,因为
{id}
- 在你的情况下是任何字符串。 (create
- 也是字符串...)因此您可以在{id}
. 之前移动 - 第三 - 如果 id 只是数字,请添加说明,例如
Route::get('/groups/create','GroupsController@create')->name("groups.create")->where(['id' => '[0-9]+');
create
路线
此解决方案中的任何一个都可以解决您的问题。但最好改变这一切。