在Laravel 5.5中从路径传递参数到控制器方法

时间:2018-04-04 10:17:24

标签: laravel laravel-5 laravel-5.5

我想将路由中的参数传递给控制器​​方法,以避免重复代码。例如,我可以拥有像这样的路线

Route::get('used-cars',          array('uses' => 
'CarController@indexUsed'));
Route::get('new-cars',           array('uses' => 
'CarController@indexNew'));
Route::get('new-and-used-cars',  array('uses' => 
'CarController@indexNewAndUsed'));

然后在每种检索该车型的方法中都有特定的代码。但是,我想在控制器中只有一个索引方法,并传递一个变量来指示它是新车还是二手车。

例如:

Route::get('used-cars',          array('uses' => 
'CarController@index(1)'));
Route::get('new-cars',           array('uses' => 
'CarController@index(2)'));
Route::get('new-and-used-cars',  array('uses' => 
'CarController@index(3)'));

在早期版本的Laravel中,我相信可以使用类似的东西来实现这个目标

Route::get('/used-cars', array('as' => 'used-cars', function(){
    return App::make('CarsController')->index(1);
}));

但我知道这在Laravel 5.4中被删除了。当我尝试它时,我只能找到控制器找不到的课程。

1 个答案:

答案 0 :(得分:0)

您可以使用命名参数(type),并将其限制为特定值(newused)。

Route::get('{type}-cars', ['as' => 'cars.new-used', 'uses' => 'CarController@index'])->where('type', 'new|used');