Help us understand the problem. What is going on with this article?

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

【概要】

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

taka_no_okapi
『笑謝を、自分らしく、続け、』 #HTML #CSS #Javascript #Ruby #PHP #AWS #docker #ci #Vuejs 勉強中! 全くの未経験、0の状態から学習中! みなさんが同じところでつまずいた際に 少しでも共有できればと思い、作りました!
https://twitter.com/taka_taka_tech
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away