I need to show three pages, depending of request parameters. Now it is realised like in the docs :
This is idea, I omit some of code
Route:
Route::get('/home/{mode}', 'ModeController@show');
Controller :
switch (mode) {
case 0 : // gather the data set 1
return View::make("View one", compact('data set1'))
case 1 : // gather the data set 2
return View::make("View two", compact('data set2'))
case 2 : // gather the data set 3
return View::make("View three", compact('data set3))
}
Sure, controller got thick and stupid. I'd like realize that like this
Route : 1. Analyze mode parameter 2. Call controller, depends of mode
Controller : Gather data and calling view
Is it possible ?
Well, solution is as here : In web.php
Route::get('data', 'data@show')->name('data.show');
Route::get('/', function (request $request) {
if (isset($request->mode)) {
$mode_prm = $request->mode;
} else {
$mode_prm = 0;
}
switch ($mode_prm) {
case 0 :
return redirect()->route('data.show');
case 1 :
//and so on
});
Controller :
class data extends Controller { //
public function show(request $request){
//gather and perform data into data set for the view
return view('data', compact(data_set));
}
}
I don't know if that solution is beautiful, but it works. Hope it helps to someone.