Laravel и Inertia создают маршрут внутри Vue

Я установил Laravel с помощью Inertia. И у меня внутри resources/js/app.js:

require('./bootstrap');

// Import modules...
import { createApp, h } from 'vue';
import { App as InertiaApp, plugin as InertiaPlugin } from '@inertiajs/inertia-vue3';
import { InertiaProgress } from '@inertiajs/progress';

const el = document.getElementById('app');

createApp({
    render: () =>
        h(InertiaApp, {
            initialPage: JSON.parse(el.dataset.page),
            resolveComponent: (name) => require(`./Pages/${name}`).default,
        }),
})
    .mixin({ methods: { route } })
    .mixin(require('./translation'))
    .use(InertiaPlugin)
    .mount(el);

InertiaProgress.init({ color: '#4B5563' });

Как видите, есть .mixin({ methods: { route } }). Я могу использовать this.route('name.of.route') для создания именованного маршрута из папки «маршруты».

Я хочу изменить метод route, чтобы добавлять префикс по умолчанию каждый раз, когда создается маршрут. Как настроить route метод Инерты.


person FosAvance    schedule 21.05.2021    source источник
comment
Откуда этот {маршрут}? Кажется, что в этом примере не определено, если только это не определено в ./bootstrap. Вы используете Зигги?   -  person Matheus Dal'Pizzol    schedule 24.05.2021
comment
Не уверен, правда, я установил Laravel с помощью Inertia и получил это   -  person FosAvance    schedule 25.05.2021


Ответы (1)


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

Подробнее об этом можно прочитать здесь (https://inertiajs.com/routing#top).

У вас есть все маршруты, доступные на вашем javascript, установленном из-за библиотеки ziggy. Он предоставляет вспомогательную функцию JavaScript route(), которая работает как Laravel, упрощая использование ваших именованных маршрутов Laravel в JavaScript.

Чтобы изменить или добавить префикс к URL-адресу, вам нужно будет сделать это из бэкэнда (Laravel) с помощью Middleware или Группы маршрутов, поскольку Ziggy не создает URL-адреса, а просто предоставляет URL-адрес, который вы определяете в файле web.php Laravel в своем Javascript.

Вот почему у вас есть @routes в корневом файле лезвия. Если вы удалите это, this.routes или this.$routes будут недоступны.

E.g.

Route::group(['prefix' => 'u'], function () {
    Route::inertia('/dashboard', 'Dashboard')->name('dashboard');
});

Это означает, что этот URL-адрес будет доступен по адресу /u/dashboard, и вы можете получить к нему доступ с помощью Javascript как this.route ('панель управления');

Или прочитайте больше о зигги-пакете, чтобы получить желаемый результат

person Solar    schedule 27.05.2021