LoginSignup
1
0

More than 3 years have passed since last update.

Laravel:v8.xにおけるTarget class ...Controller does not exist.の解消方法

Last updated at Posted at 2020-10-27

【概要】

1.結論

2.Target class ...Controller does not exist.はどういう意味か

3.どのように変更するか

4.なぜTarget class ...Controller does not exist.になるのか

5.開発環境

1.結論

web.phpのルーティングの書き方を変更する!


2.Target class ... Controller does not exist.はどういう意味か

目的である....コントローラーがないよ!と言っています。つまり、
❶何かしらの原因でコントローラーがいないことになっている
❷何かしらの原因でルーティング➡︎コントローラーへと指示がいっていない

という可能性があります。

3.どのように変更するか

今回は❷でした。

正しい書き方は2種類あります。
i)絶対パスを記載する

routes/web.php
Route::get('/person' , 'App\Http\Controllers\UserController@index' );

ii)useを使用してルートを設定

routes/web.php
#省略
use App\Http\Controllers\UserController;

Route::get('/user', [UserController::class, 'index']);





自分が記載した間違った方法は以下のようでした。(Laravel6.xでは使用可能)
iii)パスを省略して記載

routes/web.php
Route::get('User' , 'UserController@index' );


4.なぜTarget class ...Controller does not exist.になるのか

LaravelのVersionが原因でした。Laravel6.xでは3.iii)の方法で記載できましたが、Laravel8.xでは3.i)orii)でないとダメみたいです。下記の参照URLにて詳しく書かれています。

参考にさせていただいたURL:
Laravel8を試したら即効でエラー「Target class [〇〇〇Controller] does not exist.」が表示された

5.開発環境

PHP 7.4.10
Laravel 8.9
Apache 2.4.41
Mysql 5.6.47
Sequl Pro 1.1.2

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0