サーバーサイド設定

Inertia のインストールにおける最初のステップは、サーバーサイドフレームワークの設定です。Inertia は Laravel の公式サーバーサイドアダプターを備えています。その他のフレームワークについては、 コミュニティアダプター.

Inertia は Laravel に最適化されているため、このウェブサイトのドキュメントの例では Laravel を使用しています。Inertia を他のサーバーサイドフレームワークで使用する場合の例については、アダプターによって管理されているフレームワーク固有のドキュメントを参照してください。

Laravel スターターキット

Laravel の スターターキットである Breeze と Jetstream は、新しい Inertia アプリケーションのためのすぐに使えるスキャフォールディングを提供します。これらのスターターキットは、Laravel と Vue または React を使用して新しい Inertia プロジェクトを構築を開始する最速の方法です。ただし、アプリケーションに Inertia を手動でインストールする場合は、以下のドキュメントを参照してください。

依存関係のインストール

まず、Composer パッケージマネージャーを使用して Inertia サーバーサイドアダプターをインストールします。

composer require inertiajs/inertia-laravel

ルートテンプレート

次に、アプリケーションへの最初のページアクセス時にロードされるルートテンプレートを設定します。これは、サイトのアセット(CSS と JavaScript)をロードするために使用され、JavaScript アプリケーションを起動するためのルート <div> も含まれます。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    @vite('resources/js/app.js')
    @inertiaHead
  </head>
  <body>
    @inertia
  </body>
</html>

このテンプレートには、アセットと @inertia および @inertiaHeadディレクティブを含める必要があります。

デフォルトでは、Inertia の Laravel アダプターはルートテンプレートの名前が app.blade.php であると想定します。異なるルートビューを使用する場合は、Inertia::setRootView() メソッドを使用して変更できます。

ミドルウェア

次に、Inertia ミドルウェアを設定する必要があります。 HandleInertiaRequests ミドルウェアをアプリケーションに公開することで実現できます。これは、次の Artisan コマンドを使用することで実行できます。

php artisan inertia:middleware

ミドルウェアが公開されたら、HandleInertiaRequests ミドルウェアをアプリケーションの bootstrap/app.php ファイルの web ミドルウェアグループに追加します。

use App\Http\Middleware\HandleInertiaRequests;

->withMiddleware(function (Middleware $middleware) {
    $middleware->web(append: [
        HandleInertiaRequests::class,
    ]);
})

このミドルウェアは、アセットバージョンを設定するための version() メソッドと、 共有データ を定義するための share() メソッドを提供します。.

レスポンスの作成

これで、サーバーサイドの設定は完了です!Inertia の ページ を作成し、レスポンス を介してレンダリングすることができます。

use Inertia\Inertia;

class EventsController extends Controller
{
    public function show(Event $event)
    {
        return Inertia::render('Event/Show', [
            'event' => $event->only(
                'id',
                'title',
                'start_date',
                'description'
            ),
        ]);
    }
}