Как отправить информацию из файла vue.js в контроллер как идентификатор? Laravel - Inertia-vue

Я пытаюсь открыть страницу с помощью кнопки, но мне нужно отправить идентификатор элемента, в котором находится кнопка. Для контекста это страница форума обсуждения, в тире пользователей им показаны форумы, на которых они могут комментировать и внизу каждого есть кнопка, мне нужно отправить этот идентификатор форума, чтобы при нажатии на кнопку они переходили к правильному представлению форума.

Как я могу это сделать?

Я пробую разные способы

<el-button type="primary" @click="submit(f.id)">
    Answer
</el-button>

submit($id) {
    var link = 'comments/' + $id;

    this.$inertia.visit('comments/' + $id, {
        $id,
    });
},
<inertia-link class="el-button el-button--warning"
    :href="'comments/' + f.id">
        Answer
</inertia-link>

В моих маршрутах web.php

Route::resource('comments', 'ReplyController');
Route::get('comments/{id}', 'ReplyController@index');

Индекс в контроллере

public function index($id)
{
    $forum = DiscussionForum::where('id', $id)
        ->with('comment', 'user')->first();
    $comment = Reply::with('discussionForum', 'user')
        ->where('discussion_forum_id', $forum->id)
        ->orderByDesc('updated_at')->get();

    return Inertia::render('Forum/Comment.vue', [
        'forum' => $forum,
        'comments' => $comment
    ]);
}

Это не работает, перенаправление показывает мне пустое окно на главной странице? Как правильно отправить идентификатор форума?

2 ответа

Лучший способ сделать это - добавить к маршруту имя:

Route::get('comments/{id}')->name('comments')->uses('ReplyController@index');

Тогда вы можете передать свой id в инерционном звене таким образом:

<inertia-link class="el-button el-button--warning"
    :href="route('comments', { f.id })">
        Answer
</inertia-link>

Этот способ можно использовать с Ziggy, как указано в документации.https://inertiajs.com/routing

Используйте функцию emit здесь: https://vuejs.org/v2/guide/components-custom-events.html

Что-то вроде этого:

yourMethod() {
  this.$emit(
    "someName",
    this.id
  );
}
Другие вопросы по тегам