Laravelでは、アクションに対して、ルートを割り当てる必要があります。
そのことをルーティングといいます。
本記事では、Laravel8で、そのルーティングが変わったという内容を紹介します。
Target class [〇〇Controller] does not exist.
Laravel8で、ルートを設定しようとすると…
Target class [@@Controller] does not exist.
よくあるスペルミスかと思い、web.phpとcontroller.phpを確認するもおかしな箇所は見つかりませんでした。
調べたところバージョン8からルーティング方法が変わっていたことが判明しました。
ルーティング方法
バージョン7以前では、以下のようにルートを設定していました。
例では、/helloにアクセスすると、HelloControllerのindexメソッドを実行するルートを設定しています。
Route::get('/hello','HelloController@index');
バージョン8では、以下のようにルートを設定します。
use App\Http\Controllers\HelloController;
Route::get('/hello', [HelloController::class, 'index']);
記述する量が増えてしまいました…
また、シングルアクションコントローラでは以下のように記述します。
バージョン7以前
Route::get('/hello','HelloController');
バージョン8
use App\Http\Controllers\HelloController;
Route::get('/hello', HelloController::class);
ということでした。
いかにドキュメントを見ることが大事かよくわかりました。