【Laravel】エラーメッセージ「Target class [○○Controller] does not exist.」が表示されたときの解決策をお伝えします

Laravel

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。

この記事では、Laravelを実行したときに

Target class [○○Controller] does not exist.

というエラーメッセージが表示されたときの

  • エラーの原因
  • エラーの解決策

と、この記事で丁寧に解説していきます。

前提条件:実行環境について

実行環境はWindowsで、Laravelのバージョンは【8.10.0】です。

Laravelのインストールのやり方については、以下の記事をご参考ください。

「Target class [○○Controller] does not exist.」というエラーメッセージが表示される原因

\routes\web.phpでルーティングで以下のように記載していませんでしょうか?

このルートの書き方が原因なんです。
Laravelのバージョン7までだったら、この書き方はOKでした。
しかし、バージョン8になってこの書き方はNGになりました。
バージョン8用のルーティングの書き方に修正すれば、解決できます!

エラーの解決策

エラーの解決策として

  1. 完全修飾名でコントローラーを指定
  2. useでコントローラーをインポートする

の2パターンあります。
それぞれ解説します。

解決策1:完全修飾名でコントローラーを指定

解決策1として、完全修飾名でコントローラーを指定する方法があります。
一例として、↓のように書きます。

上記のようにコントローラーを指定するとき、APPから書く、つまり完全修飾名でコントローラーを指定してあげればOKです。

解決策2:useでコントローラーをインポートする

解決策2として、useでコントローラーをインポートするという方法があります。
ルーティングを設定したいコントローラーをインポートして、コントローラークラスとメソッドを指定します。
一例として、↓のように書きます。

上記の例のように、指定したいコントローラーをuseでインポートしてあげればOKです。

注意点としてルーティングで指定する引数で第一引数はバージョン8になっても変わりませんが、第二引数のみ違います。
意味としては以下になります。

まとめ:エラーメッセージ「Target class [○○Controller] does not exist.」が表示されたときはルーティングの書き方を確認しよう!

以上がエラーメッセージ「Target class [○○Controller] does not exist.」の解説でした。

Laravelのバージョンが8で、このエラーメッセージが表示されたときは、ルーティングの書き方を確認してみてください!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

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