在Laravel中,使用路径资源快速生成大量路径非常方便:
Route::resource('things'ThingsController');
这将为CRUD操作生成所有必需的RESTful路由。其中一个是PUT / PATCH路由,可以定义如下:
PUT/PATCH things/{id} ThingsController@update things.update
我已经读过,最好明确定义每个路由而不是使用路由资源,但我如何定义上面的PUT / PATCH路由。我明白我能做到
Route::put('thing/{id}', ['as' => 'things.update']);
或
Route::patch('thing/{id}', ['as' => 'things.update']);
但是第二个会覆盖或冲突第一个允许things.update
路由名称仅引用PUT或PATCH请求。如何显式创建由资源路由创建的组合PUT / PATCH路由?
答案 0 :(得分:7)
经过繁琐的搜索,请尝试以下操作;
Route::match(array('PUT', 'PATCH'), "/things/{id}", array(
'uses' => 'ThingsController@update',
'as' => 'things.update'
));
这允许您通过动词数组限制请求。
或者您可以限制资源;
Route::resource('things', 'ThingsController',
array(
'only' => array('update'),
'names' => array('update' => 'things.update')
));
两者都应提供相同的结果,但请注意它们未经过测试。
答案 1 :(得分:0)
这对我有用
Route::match(['put', 'patch'],'thing/{id}', 'ThingsController@update');