2016-05-16 104 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)'方法中,您应该能够获取该版本。 虽然我还没有测试过。