Laravel8でTarget class [Controller] does not existのエラーが出たら

ただController名を記述するだけではControllerは読み込めない。

Laravel8からは

Route::get('/hello', 'HelloController@index');

のようなControllerの呼び出しはTarget class [HelloController] does not existのように、該当のControllerがないというエラーが出てきてしまう。

Controllerを読み込むか、namespaceをデフォルトで設定するか。

公式によると、

use App\Http\Controllers\UserController;

Route::get('/user/{id}', [UserController::class, 'show']);

のようにuseを使いcontrollerを読み込んで使用している。

参考:https://readouble.com/laravel/8.x/ja/controllers.html

上記はuseを使わずまとめて記述してしまうことも可能である。

Route::get('/user/{id}', [App\Http\Controllers\UserController::class, 'show']);

もしくは、laravel8からコメントアウトされた記述を戻すことだ。

app/Providers/RouteServiceProvider.phpのRouteServiceProviderクラスにApp\Http\Controllersの値を持つ$namespaceプロパティがある

コメントアウトされている

// protected $namespace = 'App\Http\Controllers';

のコメントアウトを外して有効にする。

詳しくはこちらを参考にしてほしい:https://readouble.com/laravel/8.x/ja/upgrade.html

タイトルとURLをコピーしました