Laravel - 一条路线的多个网址

时间:2014-12-26 17:59:14

标签: laravel model-view-controller routes

无法找到任何相关内容,但我确定它很简单。

我有一条路线需要复制4次,因为我使用网址来更改查询。

目前:

Route::get('/', function()
{
  $builds = Blog::findBuilds();
  return View::make('pages/home', compact('builds'));  
});

我想做的是例如:

Route::get(array('/', '/trending', 'staff-picks'), function()
{
  $builds = Blog::findBuilds();
  return View::make('pages/home', compact('builds'));  
});

但那当然不行。什么诀窍?

2 个答案:

答案 0 :(得分:5)

正如Laravelian的回答所示,您可以而且应该使用动态路由参数。但是,如果你只是做

Route::get('{slug?}', function($slug = null){}

您将捕获每个请求(除了匹配在此之前定义的路由的请求)

要让更多控件使用正则表达式:

Route::get('{slug?}', function($slug = 'index')
{
    $builds = Blog::findBuilds();
    return View::make('pages/home', compact('builds'));  
})->where('slug', '(trending|staff-picks)');

现在slug必须是:没有(因为它是可选参数{...?}trendingstaff-picks

答案 1 :(得分:0)

Route::get('/{slug}', function($slug = null) {
    $builds = Blog::findBuilds($slug);
    return View::make('pages/home', compact('builds')); 
});

你最好把这个功能放在一个控制器中,并以这种方式传递:

Route::get('/{slug}', 'BlogController@getSlug');
Route::get('/', 'BlogController@getSlug');