LoginSignup
9

More than 3 years have passed since last update.

Laravel8以降でルーティングがうまくいかない件

Posted at

Laravel8.Xからrouteの記述方法が変わって面倒になったかもしれません。(自分でも検証済み)
Laravel7.X以前→Laravel8.X以降はエラーになったと思ったが、解決した件。

route/web.php

Route::get('/', 'TestController@index');

laravel8.X以降はこのようにしないとうまく行かなかった。。
route/web.php

use App\Http\Controllers\TestController;
Route::get('/',[TestController::class, 'index']);

しかし、Laravel8でも、app/Providers/RouteServiceProvider.php の bootメソッドでnamespaceを指定すればこれまで通りの動作をすることがわかった。
(土日にも関わらず、疑問に対応いただいた私の上司に感謝。。)

app/Providers/RouteServiceProvider.php

public function boot()
    {
        $this->configureRateLimiting();
        $this->routes(function () {
            Route::middleware('web')
                ->namespace('App\Http\Controllers')   ← 【これを足す】
                ->group(base_path('routes/web.php'));
            Route::prefix('api')
                ->middleware('api')
                ->group(base_path('routes/api.php'));
        });
    }

これで今まで通り(Laravel7以前のようにルーティングがうまくいく)
routes/web.php

Route::get('/test', 'TestController@index');

以上

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
9