我有这个route.php:
Route::group(['prefix' => 'v3/page1'], function()
{
Route::get('page1', 'TestController@page1');
});
Route::group(['prefix' => 'v4/page1'], function()
{
Route::get('page1', 'TestController@page1');
});
如您所见,有两组具有相同的路线。唯一的区别是每个组的前缀略有不同。
我需要一种方法将数据从路由传递到控制器。在这种情况下,我只对将“v3”或“v4”-string从路径传递给控制器感兴趣。
我已经阅读了一些关于before_filter的内容。但我不确定这是否是正确的方法。 我可以想象一个解决方案可能是提取url(可能在控制器的构造函数中),并从那里了解前缀是v3还是v4。但我想知道是否有更好的方法,更多的是最佳实践。也许与before_filter有关?
答案 0 :(得分:3)
您可以尝试以下内容:
Route::group(['prefix' => '{version}/page1'], function(){
Route::get('page1', 'TestController@page1');
})->where('version', 'v[3|4]');
在您的控制器中,您可以按$request->version
答案 1 :(得分:1)
Route::group(['prefix' => '{v}/page1'], function()
{
Route::get('page1', 'TestController@page1');
});
&安培;在你的方法
public function page1($v) {}
了解详情
答案 2 :(得分:1)
我会像这样写
Route::group(['prefix' => '{version}'], function()
{
Route::get('page1', 'TestController@page1');
});
我不会传入前缀中的'page1',因为这意味着page1将在路由中显示两次。 在'page1($ version)'方法中,您应该能够获得该版本。 我没有测试过这个。