С помощью Inertia вся маршрутизация определяется на стороне сервера. Это означает, что Вам не нужен Vue Router или React Router. Просто создайте маршруты, используя выбранную Вами серверную структуру.
Если у Вас есть страница, для которой не нужен соответствующий метод контроллера, например, FAQ или страница с информацией, Вы можете напрямую перейти к компоненту.
Route::inertia('/about', 'AboutComponent');
Некоторые серверные платформы позволяют создавать 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.