2014-12-05 156 views
4

在Laravel这是很方便的通过使用路由资源快速生成路由的负载:Laravel定义PUT /补丁路线是同样的路线名称

Route::resource('things'ThingsController'); 

这将产生所有CRUD必要的REST风格的路线操作。其中之一是,这可能是如下定义的PUT/PATCH路线:

PUT/PATCH things/{id} [email protected] things.update 

我读过周围,这是更好地明确定义每个路线,而不是使用路由资源,但我会如何定义上面的PUT/PATCH路线。我知道我可以做

Route::put('thing/{id}', ['as' => 'things.update']); 

Route::patch('thing/{id}', ['as' => 'things.update']); 

但第二个将覆盖或与第一允许things.update路线名称仅指无论是PUT或PATCH请求冲突。我如何显式创建由资源路由创建的组合PUT/PATCH路由?

回答

4

经过繁琐的搜索,请尝试以下;

Route::match(array('PUT', 'PATCH'), "/things/{id}", array(
     'uses' => '[email protected]', 
     'as' => 'things.update' 
)); 

这允许你通过一个动词数组来限制请求。

或者您可以限制资源;

Route::resource('things', 'ThingsController', 
     array(
      'only' => array('update'), 
      'names' => array('update' => 'things.update') 
     )); 

两者都应提供相同的结果,但请注意它们未经测试。

+0

解读第一个:它的工作原理 – 2016-02-20 15:32:58