スポンサーリンク

[Laravel] エラー”Target class [~Controller] does not exist.”

エラーの内容

Laravelで、”routes\web.php”を使って、コントローラーを参照しようとしたら、以下のようなエラーが発生しました。

Illuminate\Contracts\Container\BindingResolutionException
Target class [○○Controller] does not exist.

エラーの原因

原因はweb.phpのルーティングの書き方がダメだったとのこと。

Route::get('top', 'MainController@index');

Laravelのバージョンが8系だと、この書き方はだめだとのこと。

解決方法

完全修飾名で設定

以下のように、完全修飾名で設定することで解決できます。

Route::get('top', 'App\Http\Controllers\MainController@index');

アクション構文

もしくは、以下のようにアクション構文で指定することで解決できます。

use App\Http\Controllers\MainController;

Route::get('top', [MainController::class, 'index']);