Маршрутизация

Определение маршрутов

С помощью Inertia вся маршрутизация определяется на стороне сервера. Это означает, что Вам не нужен Vue Router или React Router. Просто создайте маршруты, используя выбранную Вами серверную структуру.

Помощники роута

Если у Вас есть страница, для которой не нужен соответствующий метод контроллера, например, FAQ или страница с информацией, Вы можете напрямую перейти к компоненту.

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

Создание URL-адресов

Некоторые серверные платформы позволяют создавать URL-адреса из именованных маршрутов. Однако у Вас не будет доступа к этим помощникам на стороне клиента. Вот несколько способов по-прежнему использовать именованные маршруты с Inertia.

Первый вариант - создать URL-адреса на стороне сервера и включить их в качестве свойств. Обратите внимание на то, как в этом примере мы передаем 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' => URL::route('users.edit', $user),
                ];
            }),
            'create_url' => URL::route('users.create'),
        ]);
    }
}

Другой вариант - сделать определения маршрутов доступными на стороне клиента как JSON, а затем использовать это для генерации URL-адресов из именованных маршрутов.

<script>
  let routes = {{ json_encode($routes) }}
</script>

Если Вы используете Laravel, библиотека Ziggy сделает это за вас автоматически с помощью глобальной функции route(). Если Вы используете Ziggy с Vue, полезно сделать эту функцию доступной как настраиваемое свойство $route, чтобы Вы могли использовать его непосредственно в своих шаблонах.

Vue.prototype.$route = route
<inertia-link :href="$route('users.create')">Создать Пользователя</inertia-link>

Для Ruby on Rails существует аналогичная библиотека под названием JsRoutes.