Inertiaを使用する場合、アプリケーションのすべてのルートはサーバーサイドで定義されます。つまり、Vue RouterやReact Routerは必要ありません。代わりに、Laravelルートを定義し、それらのルートから Inertiaレスポンスを返すことができます。
「FAQ」や「about」ページのように、対応するコントローラーメソッドを必要としないページがある場合は、Route::inertia()
メソッドを使用して、直接コンポーネントにルーティングできます。
Route::inertia('/about', 'About');
一部のサーバーサイドフレームワークでは、名前付きルートからURLを生成できます。ただし、クライアントサイドではこれらのヘルパーにアクセスできません。Inertiaで名前付きルートを使用するためのいくつかの方法を以下に示します。
1つ目のオプションは、URLをサーバーサイドで生成し、propsとして含めることです。この例では、edit_url
とcreate_url
をUsers/Index
コンポーネントに渡していることに注目してください。
class UsersController extends Controller
{
public function index()
{
return Inertia::render('Users/Index', [
'users' => User::all()->map(function ($user) {
return [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'edit_url' => route('users.edit', $user),
];
}),
'create_url' => route('users.create'),
]);
}
}
ただし、Laravelを使用する場合、Ziggyライブラリを使用すると、名前付きのサーバーサイドルートをグローバルなroute()
関数を通じて利用できるようになります。実際、Laravelのいずれかの スターターキットを使用してアプリケーションを開発している場合、Ziggyはすでに設定されています。
ZiggyをVueで使用している場合は、この関数をカスタムの$route
プロパティとして使用できるようにすると、テンプレートで直接使用できます。
app.config.globalProperties.$route = route
<Link :href="$route('users.create')">Create User</Link>