Как отправить информацию из файла 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
);
}