Inertiaレスポンスの作成は簡単です。始めるには、コントローラーまたはルート内でInertia::render()
メソッドを呼び出し、レンダリングしたいJavaScriptページコンポーネントの名前と、そのページのプロパティ(データ)を渡します。
以下の例では、Event/Show
ページコンポーネントに、4つの属性(id
、title
、start_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'
),
]);
}
}
アプリケーションのルート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
エラーが発生します。通常、これはアプリケーションを構築する際に実際に必要なデータ量よりもはるかに多いものです。