Как лучше всего сделать страницу поста с комментариями. 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'); для отдельных маршрутов для каждого метода просто найти проблему.

Другие вопросы по тегам