猿问

在 Laravel 中通过单击按钮将用户 ID 添加到帖子中会出现错误消息“不支持发布方法”

在这个应用程序中,我有一个用户表和一个帖子表。


在个人帖子刀片 (post/{id}) 中,我有一个名为“Pick Up Task”的按钮。单击时,它应该将 $post->user 设置为当前用户的 ID。我已经按照当前文档设置了所有内容,但它仍然给我错误:“此路由不支持 POST 方法。支持的方法:GET、HEAD。”


这是我的代码:


立柱刀片中的按钮


<form action="update" method="POST">

                @csrf

                <input type="hidden" name="user_id" value="{{Auth::user()->id}}"/>

                <input type="hidden" name="task_id" value="{{ $task->id }}"/>

                <button class="btn btn-outline-secondary" type="submit" value= "UPDATE" href="#">➕ Pick up Task</button>

                </form>

后控制器中的函数


// ADD USER TO TASK

public function update() 

{

    $user = request('user_id');

    $task = request('task_id');


    //Fill Post User

    $selectedtask = Posts::findOrFail($task);

    $selectedtask->update(['user', $user]);


    //Success

    Session::flash('success', 'You picked up a new task.');

    return view('/');


}

我的路线 (web.php)


//Add user as assignee

Route::POST('update', 'PostController@update');


德玛西亚99
浏览 104回答 2
2回答

慕尼黑5688855

尝试移动Route::POST('update',&nbsp;'PostController@update');到 web.php 文件的顶部,然后清除路由缓存,更改代码<form&nbsp;action="/update"&nbsp;method="POST">(在更新前添加斜杠)并尝试您的代码

慕田峪9158850

您被发送到错误的 URI。将您的form标签更改为此:<form action="" method="POST">这将确保您被发送到您当前所在的完全相同的路线,但使用 POST 方法而不是 GET 方法。您的路线应如下所示:Route::get('post/{post}', 'PostController@show'); // For viewingRoute::post('post/{post}', 'PostController@update'); // For updating更正您的update控制器方法以通过模型绑定使用参数:public function update(Request $request, Post $post)&nbsp;{&nbsp; &nbsp; $user = request('user_id');&nbsp; &nbsp; $task = request('task_id');&nbsp; &nbsp; //Fill Post User&nbsp; &nbsp; $selectedtask = Posts::findOrFail($task);&nbsp; &nbsp; $selectedtask->update(['user', $user]);&nbsp; &nbsp; //Success&nbsp; &nbsp; Session::flash('success', 'You picked up a new task.');&nbsp; &nbsp; return view('/');}我还假设您混淆了task_idPost 模型的 ID,因为您正在通过该请求变量获取帖子?您可以通过使用模型绑定并通过 Request 对象访问用户,将您的控制器方法归结为以下内容:public function update(Request $request, Post $post)&nbsp;{&nbsp; &nbsp; $post->update(['user' => $request->user()->id]);&nbsp; &nbsp; return redirect('/')->with('success', 'You picked up a new task.');}如果不存在,模型绑定将自动返回 404。
随时随地看视频慕课网APP
我要回答