2014-04-12 27 views
1

我有一個網站(使用Laravel 4),我希望爲廣告系列構建着陸頁。起初,我想只有一個登錄頁面視圖。但是H1標籤和其他一些內容需要與用戶在那裏帶來的任何廣告匹配。我將運行的許多不同廣告將指向不同的路線。舉例來說,如果我有3個廣告(含3頁不同的標題),他們的目標將是:Laravel路由:/ seo-path-here到LandingPageController @ getPage(3)

  • mysite.com/great-deal
  • mysite.com/buy-now
  • mysite.com/ two-for-one

如何設置路線,使這3條路徑指向我的LandingPageController的getPage函數並傳遞唯一參數?

例如,/ great-deal會調用getPage(1),而/ buy-now會調用getPage(2),/ two-for-one會調用getPage(3)。我已經在getPage()中有一個進程,然後根據該參數將適當的標題/內容提供給視圖。

如果我願意使用mysite.com/x/great-deal,我會知道該怎麼做,但我不想要額外的細分(是'x')。

回答

3

你只需要添加像你routes.php文件下列路線:

Route::get('{page}', array('as' => 'page', 'uses' => '[email protected]')); 

現在在你的控制器創建getPage方法是這樣的:

public function getPage($page) 
{ 
    // $page will contain the page slug used in the url 
    // for example, great-deal for mysite.com/great-deal 
} 

所以,用一個單一的任何urlmysite.com/great-dealmysite.com/1這樣的參數將被路由到getPage方法,並且在URL中傳遞的參數將在$ page`變量中可用。

您也可以使用where方法篩選url,例如:

Route::get('{page}', array('as' => 'page', 'uses' => '[email protected]')) 
->where('page', 'great-deal|buy-now|two-for-one'); 

因此,只有這些參數將匹配的路線,但在url通過其他參數不匹配,例如,mysite.com/1將不匹配。