24
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel 8 ルーティングで「Target class [コントローラ名] does not exist」がでたときの対処法

Last updated at Posted at 2020-09-12

Laravel 8 をインストールして、とりあえずCRUDシステム作って8系がどんな感覚か確かめようとして、すぐにつまづいた…(; ・`д・´)
エラーがでたのはルーティングが正しく記述されていなかったのが理由でした。

注意すべきルーティングの設定

Laravel8のルーティングは今までのルーティングと記述の仕方が少しことなります。https://readouble.com/laravel/8.x/ja/routing.html

Laravel8のルーティングを定義する場合、

web.php
Route::resource('/blogs', BlogController::class);

こんな感じで記述しています。

ここで注意しなければならないのが、ルート定義ファイル web.php の冒頭にルート定義で使用されているコントローラの名前空間をuseキーワードを使用して書くということです。

上記の例でいえば

web.php
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\BlogController;

Route::resource('/blogs', BlogController::class);

BlogControllerクラスを使用しているならば、**use App\Http\Controllers\BlogController;**と記述してインポートしてください。これを書き忘れると、「Target class [コントローラ名] does not exist」とエラーがでてしまいます。

上記ではリソースフルなルート設定をしましたが、普通にルーティングする場合は、

web.php
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\BlogController;

Route::get('/blogs', [BlogController::class, 'index']);

第2引数のところは配列になっていますのでご注意ください。もちろん、この記述でもuse App\Http\Controllers\BlogController;を忘れずに!

24
10
0

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
24
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?