LoginSignup
0
0

More than 1 year has passed since last update.

techpitのlaravel講座の手順通りにやっていたらTarget class [UserController] does not exist.が出た件

Posted at

techpitのlaravel講座をやっていたら

スクリーンショット (1622).png

とあった。
しかし、ユーザーコントローラーファイルはちゃんとあるし、クラスもある
講座通り進めていたが、誤字などがあると思ったので、今度は講座のコードを完全コピペで試してみた
スクリーンショット (1622).png

はい、ダメでした

原因


私のlaravelのバージョンが8で、講座で使用しているlaravelのバージョンが6だった

laravel8とlaravel6では、ルーティングの仕様が変わって違うことが判明(正確には8から変更)

laravel7までのルーティング

web.php
Route::group(['prefix' => 'users', 'middleware' => 'auth'], function () {
    Route::get('show/{id}', 'UserController@show')->name('users.show');
});

laravel8までのルーティング仕様に変更

web.php
Route::group(['prefix' => 'users', 'middleware' => 'auth'], function () {
     Route::get('show/{id}', [UserController::class, 'show'])->name('users.show');
});

これで、UserControlerのクラスであるshowを参照しますという意味になる
しかし、これでも足りないみたいで以下の記述が必要になる

web.php
use App\Http\Controllers\UserController; //追記
Route::group(['prefix' => 'users', 'middleware' => 'auth'], function () {
     Route::get('show/{id}', [UserController::class, 'show'])->name('users.show');
});

これでユーザーコントローラーファイルを使いますよという意味になる。
これで、ルーティング通りにshow/{id}にアクセスすると

スクリーンショット (1624).png

感想

laravelの仕様変更が原因とは思いもつかなかった
laravel8でlaravel7以前の教材や動画を学習している場合気を付けなければいけないと感じた。

0
0
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
0
0