漂亮的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)。出于这个原因,我会建议您将该方法的名称更改为其他名称。
感谢您的回复。我对RESTful开发不熟悉,您的回答有助于澄清我的情况。 – 2014-09-21 23:09:05