Laravelには管理画面パッケージであるLaravel-adminがあります。
これを使うと簡単に管理画面を構築する事ができるので大変便利です。
今回は、Laravel-adminで管理画面作成中に以下のエラーが発生したため、その対処方法を記載します。
$ php artisan route:list コマンド実行時に、
「クラスが存在しない」というエラーです。
開発環境
- 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演算子を補完してくれたりするので注意ですね。
コメント