Laravel — Маршрутизация с инерционным посещением для заполнения реквизита в Vuejs3

#laravel #vue.js #laravel-8 #vuejs3 #inertiajs

Вопрос:

Я хочу отправлять данные с page A page B контроллеров без использования, только в маршрутах laravel. ( Laravel / VueJS3 / InertiaJS )

На моей первой странице у меня есть этот метод:

 // first.vue
tappedCourse(course: Course): void {
    const data: secondParams = {
        courseName: course.name,
    };
    Inertia.get("/second", data as any);
},
 

И в моем маршруте:

 // web.php
Route::inertia('/second', 'Course/Second');
 

Наконец-то моя вторая страница.:

 // second.vue
export default defineComponent({
props: {
    courseName: {
        type: String,
        required: true,
        default: "",
    },
},
 

Проблема в том, что реквизит второй страницы не получает значение, но если я вставлю его вручную:

 // web.php
Route::inertia('/second', 'Course/Second', [
    "couseName" => "Inertia   Laravel"
]);
 

Все работает нормально.

У вас есть какой-нибудь способ, как я могу получить «параметр запроса» в своем маршруте? лайк $courseName и отправьте мне second.vue код лайка выше.

Примечание: inertia.get Это работает, потому что я получаю в URL имя параметра: значение.

 http://localhost:8000/second?name="Inertia   Laravel"
 

Примечание 2: Я бы предпочел, чтобы это был ПОСТ, но я не нашел в документации, как это сделать с помощью laravel route ( Маршрут::инерция ).

Ответ №1:

Route::inertia только обрабатывает GET и HEAD запрашивает. Попробуйте это:

 Route::post('/second', function ($courseName) {
   return Inertia::render('Course/Second', compact('courseName'));
});