Laravelでroutesのweb.phpファイルを分ける方法

Laravelで開発をしていると、システムの成長とともにルーティングのファイルが肥大してくることはよくあるかと思います。

標準ではweb.phpにどんどん追記していくかと思いますが、個人的にはあまり好きではありません。

(もちろん、1つにまとまっていてわかりやすいという意見もありますよね。)

今回はweb.phpだけでなく、他のファイルも指定できるようにする方法をご紹介します。

目次

RouteServiceProviderを設定する

まずはweb.phpがどのようにして設定されているか確認します。

RouteServiceProvider.phpファイルを見ると、以下のような記載があります。

    public function boot(): void
    {
        $this->routes(function () {
            Route::middleware('api')
                ->prefix('api')
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->group(base_path('routes/web.php')); // 標準で設定されている
        });
    }

何となく気づくかと思いますが、

->group(base_path('routes/web.php'))

が大事なところです。

例として、管理者画面と一般ユーザーが見る画面を分けるという意味で、以下のように記載したとしましょう。

->group(base_path('routes/web.php'))
->group(base_path('routes/admin.php'));

routes/admin.phpファイルを作成する

あとは特に説明するまでもありませんが、routesディレクトリ内にadmin.phpファイルを作成するだけです。

書き方はweb.phpなどと同じなので割愛します。

金井 泰樹のアバター 金井 泰樹 FUNBREW代表

FUNBREWの代表。
新卒からIT系の企業に勤め、SES、スマホアプリ開発、自社開発の会社で経験を積んで独立。
新卒時代にエンジニアとしてのキャリアを積むのに失敗し、その後に苦労した経験から、現在教育事業の立ち上げを準備中。
強みはウェブシステム開発全般と迅速なレスポンスです。

目次