【Laravel8 – Inertia.js】パッケージ開発時のroute設定について

問題発生…

Laravel8では、パッケージ開発時にルート情報を追加したい時があり、
そのような時は、ServiceProviderにloadRoutesFromメソッドを追加します。

/**
 * 全パッケージサービスの初期起動
 *
 * @return void
 */
public function boot()
{
    $this->loadRoutesFrom(__DIR__.'/../routes/web.php');
}

しかし、ルートのrender処理にInertia.jsを使っている場合は、
以下のようにしても上手くルーティングできません。

Route::get('/hoge', function () {
	return Inertia::render('Hoge');
})->name('hoge');

ルートディレクトリの route/web.php に記述した時は上手くいきます。
しかし、loadRoutesFromを使ってセットしようとするとダメなのです。

解決方法

以下のようにしましょう。
Inertiaにルート情報をセットすることができるようになります。

Route::middleware(['web', HandleInertiaRequests::class])->group(function () {
        Route::get(‘/hoge, function () {
        	return Inertia::render(‘Hoge’);
        })->name(‘hoge’);
});

Inertiaはvur-routerを使わずに独自のルーティング処理をしています。

終わりに

今回はじめてLaravel8のパッケージ開発をしてみましたが、思った以上に収穫があります。
composerを使って作るため、今までなんとなくcomposer installしかせず、
ブラックボックスだったvendorディレクトリ内の理解が進みました。

ABOUTこの記事をかいた人

フリーランスとして働く、フルスタックエンジニア 初崎 匠のサイト。仕事のことから趣味のアニメーション制作、英語学習など、様々なことを通じて、少しでも多くの人が幸せになれるような価値を提供できるよう挑戦し続けます。