2014-12-05 146 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