【Laravel8変更点】ルーティングの書き方に注意! / Target class [XxController] does not exist.の解決法

Laravel

結論から言うと、

Route::get('/', 'XxController@index')->name('xx.index');

Route::get('/', 'App\Http\Controllers\XxController@index')->name('xx.index');

このように変更すると解決します。緑文字部分のパスが必要になります。

---

もしくは、配列を使った書き方だと、比較的自然に書けます。

Route::get('/', [XxController::class, 'index'])->name('xx.index');
理由

なぜ旧だと、エラーが出るようになったのか

→ app/Providers/RouteServiceProvider.php で定義されていた、名前空間が削除されたから

なぜ、名前空間が削除されたのか

→ おそらく、配列を使った書き方が標準になったため

ちなみに

この変更は、既存プロジェクトのアップデートの場合は影響しません。(名前空間残っているので)

新規プロジェクトで、以前の書き方をすると、以下のようなエラーがでます。

cf.
Laravel8 新しいルーティングの書き方 - kawax.biz

 

コメント