我想将路由中的参数传递给控制器方法,以避免重复代码。例如,我可以拥有像这样的路线
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中被删除了。当我尝试它时,我只能找到控制器找不到的课程。
答案 0 :(得分:0)
您可以使用命名参数(type
),并将其限制为特定值(new
,used
)。
Route::get('{type}-cars', ['as' => 'cars.new-used', 'uses' => 'CarController@index'])->where('type', 'new|used');