techpitのlaravel講座をやっていたら
とあった。
しかし、ユーザーコントローラーファイルはちゃんとあるし、クラスもある
講座通り進めていたが、誤字などがあると思ったので、今度は講座のコードを完全コピペで試してみた
はい、ダメでした
原因
私の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}にアクセスすると
感想
laravelの仕様変更が原因とは思いもつかなかった
laravel8でlaravel7以前の教材や動画を学習している場合気を付けなければいけないと感じた。