2014-09-21 81 views
2

我剛開始學習Laravel,想知道是否可以創建一個Route :: resource,允許我使用RESTful方法訪問下面的URL:漂亮的URL使用Laravel的Route :: resource REST風格的方法

我想的URL看起來像這樣:

http://example.com/articles/2014/09/22/this-is-the-article-title 

而且我想用從我ArticlesController訪問此:

//GET articles/{year}/{month}/{day}/{title} 
public function show($year, $month, $day, $title) { 
    $article = //find article in DB 
    return View::make('articles.show')->with('article', $article); 
} 

從我收集到目前爲止,這種能以某種方式可以通過在routes.php文件的文件做類似下面的完成:

Route::resource('year.month.day.articles', 'ArticlesController'); 

但是,這並不完全正確的看向我。

有沒有人有任何建議?

回答

2

資源控制器可用於構建構成API骨幹的RESTful控制器。一般語法是這樣的:

Route::resource('resourceName', 'ControllerName'); 

這將在一個單一的呼叫建立seven different routes,但實際上只是這樣一個方便的方法:

Route::get('/resourceName',     '[email protected]'); 
Route::get('/resourceName/{resource}',  '[email protected]'); 
Route::get('/resourceName/create',   '[email protected]'); 
Route::get('/resourceName/{resource}/edit', '[email protected]'); 
Route::post('/resourceName',    '[email protected]'); 
Route::put('/resourceName/{resource}',  '[email protected]'); 
Route::delete('/resourceName/{resource}', '[email protected]'); 

的網址都只有基於關閉的資源的名稱,您指定,方法名稱內置。我不知道有任何方式,您可以修改這些使用資源控制器。

如果你想漂亮的URL,然後分配這些路由,而無需使用資源控制器:

Route::get('/articles/{year}/{month}/{day}/{title}', '[email protected]'); 

請注意,如果你使用的show方法,這將與任何REST-FUL URL衝突,你可能有(資源控制器中的show方法只會期望傳入1個參數,即要顯示的資源的ID)。出於這個原因,我會建議您將該方法的名稱更改爲其他名稱。

+0

感謝您的回覆。我對RESTful開發不熟悉,您的回答有助於澄清我的情況。 – 2014-09-21 23:09:05