2016-05-16 69 views
0

控制器我有這個route.php:傳遞變量從路線

Route::group(['prefix' => 'v3/page1'], function() 
{ 
    Route::get('page1', '[email protected]'); 
}); 

Route::group(['prefix' => 'v4/page1'], function() 
{ 
    Route::get('page1', '[email protected]'); 
}); 

正如你所看到的,有2組具有相同的路線。唯一的區別是每個組的前綴略有不同。

我需要一種方法來將數據從路由傳遞到控制器。在這種情況下,我只關心從路由傳遞「v3」或「v4」字符串到控制器。

我讀了一些關於before_filter的內容。但林不知道這是否是正確的路。 我可以想象,解決方案可能是提取URL(也許在控制器的構造函數中),並從那裏瞭解前綴是v3還是v4。但我想知道是否有更好的方法,更好的做法。也許與before_filter的東西?

+1

這個問題的答案(http://stackoverflow.com/questions/31113361/laravel-5-get-route-prefix-in-controller-method)適用於你的。您也可以從前綴中刪除「/ page1」部分。 – sevavietl

回答

3

你可以嘗試這樣的:

Route::group(['prefix' => '{version}/page1'], function(){ 
    Route::get('page1', '[email protected]'); 
})->where('version', 'v[3|4]'); 

在你的控制器,你可以通過$request->version

獲取版本
1

我會寫這樣

Route::group(['prefix' => '{version}'], function() 
{ 
    Route::get('page1', '[email protected]'); 
}); 

我不會在「第1頁」傳遞前綴,因爲這將意味着第1頁將在航線出現兩次。 在'page1($ version)'方法中,您應該能夠獲取該版本。 雖然我還沒有測試過。