2016-05-24 88 views
2

我建設使用Laravel資源控制器一切運作順利,直到我試圖覆蓋默認的Laravel資源路由調用get創建時,但Laravel根本不會接受的覆蓋實物模型API。該文檔聲明以下內容:Laravel 5.2資源路由覆蓋默認行爲

如果有必要將其他路由添加到資源控制器超出默認資源路由,則應該在調用Route :: resource之前定義這些路由;否則,由資源方法定義的路由可能無意地優先於你的補充途徑:

在我的代碼,我有以下幾點:

routes.php文件

Route::group(['prefix' => 'api/v1', 'middleware' => 'cors'], function() { 
    Route::get('test/create', 'V1\Universal\[email protected]'); 
    Route::resource('test', 'V1\Universal\TestController'); 
}); 

TestController.php

public function create2() 
{ 
    return "create 2 override function"; 
} 


public function create() 
{   
    return "create default function"; 
} 

當調用API/api/v1/test /創建其始終觸發create()方法而不是create2()方法。根據Laravel文檔,我的自定義附加路線應該優先於其在資源之前定義的路線。

任何想法?

回答

1

如果你想overrite資源的路線,你想嘗試Route::resource後,將其添加。從文檔報價講述如何添加路由資源的路由,而不是關於如何重寫他們:如果有必要

添加額外的路線到資源 控制器超過默認資源路徑,你應該在調用Route :: resource之前定義那些 路由;否則,由資源方法定義的路線 可能無意中優先 在你的補充途徑

你也可以使用except說法:

Route::group(['prefix' => 'api/v1', 'middleware' => 'cors'], function() { 
    Route::get('test/create', 'V1\Universal\[email protected]'); 
    Route::resource('test', 'V1\Universal\TestController', ['except' => ['create']]);); 
}); 

在這種情況下Route::resource不會造成create路線。