【Laravel5.8】RouteServiceProviderを使ってControllerを簡潔にしたい
GETパラメータで$idを受け取って、Controllerで該当クラスのレコードを受け取ると普通なら以下のような書き方になります。
web.php
Route::get('/hello/{person}','HelloController@index2');
HogeController.php
use App\Person;
//省略
public function index2($person)
{
$data = [
'msg'=> Person::find($person);
];
return view('hello.index', $data);
}
これをRouteServiceProviderを使用して書いた場合…
HogeController.php
public function index2($person)
{
$data = [
'msg'=> $person
];
return view('hello.index', $data);
}
RouteServiceProvider.php
use App\Person; //省略 public function boot() { // parent::boot(); Route::model('person',Person::class); ★ }
あれ?あんまり変わらない…と思われるかもしれませんが、Controllerが多くなってきた場合に毎回Classを呼ぶ手間が省けるため簡素化できる(はず)。
シンプルなWebアプリなら必要ないですが、Controllerが複雑化して来る場合には使っていきたいですね!