レスポンス

レスポンスの作成

Inertiaレスポンスの作成は簡単です。始めるには、コントローラーまたはルート内でInertia::render()メソッドを呼び出し、レンダリングしたいJavaScriptページコンポーネントの名前と、そのページのプロパティ(データ)を渡します。

以下の例では、Event/Showページコンポーネントに、4つの属性(idtitlestart_date、およびdescription)を含む単一のプロパティ(event)を渡します。 Event/Showページコンポーネント。

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'
            ),
        ]);

        // Alternatively, you can use the inertia() helper...
        return inertia('Event/Show', [
            'event' => $event->only(
              'id',
              'title',
              'start_date',
              'description'
            ),
        ]);
    }
}
Laravelアプリケーション内では、Event/Showページは通常、resources/js/Pages/Event/Show.(js|vue|svelte)にあるファイルに対応します。
ページを高速にロードするために、ページに必要な最小限のデータのみを返してください。また、コントローラーから返されるすべてのデータはクライアント側で表示されるため、機密情報を省略するようにしてください。

ルートテンプレートデータ

アプリケーションのルートBladeテンプレートでプロパティデータにアクセスしたい場合があります。たとえば、メタディスクリプションタグ、Twitterカードのメタタグ、Facebook Open Graphのメタタグを追加したい場合があります。このデータには、$page変数を使用してアクセスできます。

<meta name="twitter:title" content="{{ $page['props']['event']->title }}">

JavaScriptページ/コンポーネントに送信されないデータをルートテンプレートに提供したい場合もあります。これは、withViewDataメソッドを呼び出すことで実現できます。

return Inertia::render('Event', ['event' => $event])
    ->withViewData(['meta' => $event->meta]);

withViewDataメソッドを呼び出した後、定義されたデータにBladeテンプレート変数にアクセスする場合と同様にアクセスできます。

<meta name="description" content="{{ $meta }}">

最大レスポンスサイズ

クライアント側の履歴ナビゲーションを有効にするために、すべてのInertiaサーバーレスポンスはブラウザーの履歴状態に保存されます。ただし、一部のブラウザーでは、履歴状態に保存できるデータ量にサイズ制限があることに注意してください。

たとえば、Firefoxには640k文字のサイズ制限があり、この制限を超えるとNS_ERROR_ILLEGAL_VALUEエラーが発生します。通常、これはアプリケーションを構築する際に実際に必要なデータ量よりもはるかに多いものです。