【Laravel-admin】Target class does not exist エラーの解消法

記事内に商品プロモーションを含む場合があります

技術メモ

Laravelには管理画面パッケージであるLaravel-adminがあります。

これを使うと簡単に管理画面を構築する事ができるので大変便利です。

 

https://laravel-admin.org/

 

今回は、Laravel-adminで管理画面作成中に以下のエラーが発生したため、その対処方法を記載します。

 

$ php artisan route:list コマンド実行時に、

 

Target class [App\Admin\Controllers\App\Admin\Controllers\PartnerController] does not exist.

 

「クラスが存在しない」というエラーです。

 

開発環境

  • MacBook Pro (macOS Catalina バージョン10.15.1)
  • Laravel Framework 6.6.2
  • PHP 7.3.9
  • Laravel-admin 1.7

 

Target class 〜 does not exist. エラー発生の経緯

$ php artisan admin:make PartnerController --model=App\\Partner

で既に作っていたPartnerモデルからコントローラーを作成。

 

 

上記の記載通りに、

router->resource('partners', PartnerController::class); 

をapp/Admin/routes.phpに挿入。

 

その後http://localhost:8000/admin/partnersアクセス時に、

 

が発生。

ルーティングを確認するため、$ php artisan route:listコマンドを打つとタイトルのエラーが発生。

 

エラーの原因

app/Admin/routes.phpに

use App\Admin\Controllers\PartnerController;

を記載していた。

 

app/Admin/routes.php

 

app/config/admin.phpを確認するとわかりますが、すでに名前空間(namespace)が指定されています。

app/config/admin.php

 

そのため、app/Admin/routes.phpにも記載してしまうと

App\Admin\Controllers\App\Admin\Controllers\PartnerController

このように二重になってしまい、「そんなクラスないぞ」と怒られていた訳です。

 

Target class 〜 does not exist. エラーの解消法

app/Admin/routes.phpに記載していた

「use App\Admin\Controllers\PartnerController」を削除。

 

http://localhost:8000/admin/partnersにアクセスすると、問題なく表示できました。

 

VSCodeなどのIDEを使用していると、自動でuse演算子を補完してくれたりするので注意ですね。

技術メモ
スポンサーリンク
スポンサーリンク
のすけをフォローする
やばブロ!

コメント