Как лучше всего сделать страницу поста с комментариями. Laravel - vue.js - inertia-vue
Пытаюсь сделать дискуссионный форум с комментариями, вот как это выглядит
На этой странице есть маршрут
Route::get('forums/comment/{id}', 'ForumController@comment');
В контроллере
public function comment($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
]);
}
Мой вопрос в том, как затем сохранить этот комментарий в контроллере комментариев, в моем файле vue у меня есть этот метод, который запускается, когда я нажимаю кнопку сохранения
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
if (!this.form.id) {
this.$inertia.post('comments', {
comment: this.form.comment,
forum_id :this.form.id,
}).then(() => this.refresh())
}
} else {
return false;
}
this.reset();
});
},
Еще у меня есть этот маршрут для комментариев
Route::resource('comments', 'ReplyController');
Для функции магазина у меня есть это
public function store(Request $request)
{
DB::beginTransaction();
$comment = new Reply();
$comment->user_id = auth()->user()->id;
$comment->discussion_forum_id = $request->forum_id;
$comment->comment = $request->comment;
$comment->comment_time = Carbon::now();
$comment->save();
DB::commit();
}
Проблема в том, что я получаю эту ошибку, когда пытаюсь сохранить комментарий.
Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD.
Как я могу это исправить? или Как лучше это сделать?
1 ответ
Чтобы найти проблему, вам необходимо выполнить отладку. Я бы сделал следующее:
В консоли разработчика проверьте вкладку сети, чтобы проверить запрос, чтобы увидеть URL-адрес и отправляемые данные.
В консоли запустить
php artisan route:list
чтобы увидеть, все ли ваши маршруты перечислены. Также попробуйте очистить кеш с помощьюphp artisan route:cache
Другой вариант - изменить маршрут ресурса.
Route::resource('comments', 'ReplyController');
для отдельных маршрутов для каждого метода просто найти проблему.