漂亮的URL使用Laravel的Route :: resource REST风格的方法

问题描述:

我刚开始学习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'); 

但是,这并不完全正确的看向我。

有没有人有任何建议?

资源控制器可用于构建构成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