使用Route::resource('recipe', 'RecipeController');
等定义资源时,将定义以下路由:/photo/{photo}/edit
,一旦你定义了所有的资源,你就会得到这样的结果:
/recipes/{recipes}/edit
/allergens/{allergens}/edit
/ingredients/{ingredients}/edit
因为我的所有记录都使用id
作为主键(MongoDB),所以我希望使用{id}
作为主键,如下所示:
/recipes/{id}/edit
/allergens/{id}/edit
/ingredients/{id}/edit
我深入研究了Router
类,但我不知道如何指定它。
此外,当我用Form::model($record)
创建表单时,我会得到类似/recipes/{recipes}
的操作,因为recipes
是$record
的属性。
如何将 key 参数的名称定义为id
,而不是recipes
、allergens
、ingredients
?
3条答案
按热度按时间gorkyyrv1#
我知道这是4岁的问题,但任何人谁是谷歌;您可以传递第三个参数来覆盖键命名:
Route::resource('ingredients', 'IngredientController', ['parameters' => ['ingredients' => 'id']]);
或者
Route::resource('ingredients', 'IngredientController')->parameters(['ingredients' => 'id']);
参见文档
4nkexdtk2#
为了更改
Route::resource
的参数名,您需要定制ResourceRegistrar
实现。下面是你如何以最短的方式实现这一目标:
现在,您的路线将如下所示:
请注意,这种方法不能用于嵌套资源,因此它们将是默认和自定义行为的混合,如下所示:
7gcisfzg3#
您可以将您的id传递给不需要将参数{recipes}更改为{id}的路由,因为这些参数只是占位符。
所以
和这个一样
对于此路由
/recipes/{recipes}/edit