我想要两个只使用两个路线和获取(mp3,视频,专辑或艺术家)。
这是我的尝试:(在一个组" /")
Route::get("mp3s", "PostController@archivePt");
Route::get("mp3s/mp3/{slug}", "PostController@singlePost");
Route::get("videos", "PostController@archivePt");
Route::get("videos/video/{slug}", "PostController@singlePost");
Route::get("albums", "PostController@archivePt");
Route::get("albums/album/{slug}", "PostController@singlePost");
Route::get("artists", "PostController@archivePt");
Route::get("artists/artist/{slug}", "PostController@singlePost");
我写了一个foreach,但是:
我认为在每个页面都是不好的做法。
- 醇>
我不能在这里得到(mp3或专辑,..):
foreach (pts as $pt) {
Route::get( $pt.'s', 'PostController@archivePt');
Route::get( ("{$pt}s/$pt/{slug}"), "PostController@singlePost");
}
答案 0 :(得分:1)
当你使用相同的控制器 - 被认为是一种糟糕的做法 - 时,你可以像下面这样处理你的参数:
Route::group("media", function () {
Route::get("{category}", "PostController@archivePt");
Route::get("{category}/{type}/{slug}", "PostController@singlePost");
});
在您的方法中,将这些变量称为:
public function singlePost($category, $type, $slug)
....
答案 1 :(得分:0)
您也可以使用单一路线,
Route::get("{category}/{type?}/{slug?}", "PostController@getPost");
在你的后置控制器
public function singlePost($category, $type = null, $slug = null) {
}
通过这种方式你可以实现,方法重载,使用switch
语句来检索结果,如果只有类别来,显示档案,如果类别和类型来,显示该类型的数据列表,如果全部三个来找回单个帖子。