Laravel路线碰撞

时间:2019-03-25 13:16:14

标签: laravel laravel-5.5

我正在尝试构建一个简单的CRUD应用,并且遇到一些有关路线的问题。要查看组,我有以下路线

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

并用于创建

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

问题是在定义了以上路由的情况下,create模块不起作用,但是当我注释掉/routes/{id}路由时,它起作用了。

在解决此问题方面的任何帮助都将受到赞赏。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

  • 首先,您不应该通过GET请求进行任何创建。最好改用POST
  • 第二个-它是有序的,因为{id}-是您所用的任何字符串。 (create-也是字符串...)因此,您可以将create的路线移到{id}的前面。
  • 第三条-如果仅是数字,请添加id的说明,例如Route::get('/groups/create','GroupsController@create')->name("groups.create")->where(['id' => '[0-9]+');

任何一种此解决方案都可以解决您的问题。但是最好改变所有这些。