0

我正在尝试创建一个带有评论的讨论论坛,这就是它的样子 在此处输入图像描述

此页面有路线

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。

我怎样才能解决这个问题?或者有什么更好的方法来做到这一点?

4

1 回答 1

1

为了能够找到问题,您需要调试。我会做以下事情:

  • 在开发人员控制台中,检查网络选项卡以检查请求以查看正在发送的 url 和数据。

  • 在控制台中运行php artisan route:list以查看是否列出了所有路由。也尝试清除缓存php artisan route:cache

  • 其他选项可能是更改Route::resource('comments', 'ReplyController');每个方法的单个路由的资源路由,只是为了找到问题。

于 2019-11-12T22:48:33.587 回答