ルーティング

ルートの定義

Inertiaを使用する場合、アプリケーションのすべてのルートはサーバーサイドで定義されます。つまり、Vue RouterやReact Routerは必要ありません。代わりに、Laravelルートを定義し、それらのルートから Inertiaレスポンスを返すことができます。

ショートハンドルート

「FAQ」や「about」ページのように、対応するコントローラーメソッドを必要としないページがある場合は、Route::inertia()メソッドを使用して、直接コンポーネントにルーティングできます。

Route::inertia('/about', 'About');

URLの生成

一部のサーバーサイドフレームワークでは、名前付きルートからURLを生成できます。ただし、クライアントサイドではこれらのヘルパーにアクセスできません。Inertiaで名前付きルートを使用するためのいくつかの方法を以下に示します。

1つ目のオプションは、URLをサーバーサイドで生成し、propsとして含めることです。この例では、edit_urlcreate_urlUsers/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>