如何使用 get 方法删除此 Laravel 表单

Posted

技术标签:

【中文标题】如何使用 get 方法删除此 Laravel 表单【英文标题】:How can I delete this Laravel form using get method 【发布时间】:2021-03-09 04:43:30 【问题描述】:

“删除”方法不起作用,所以我使用了“获取”,但我的数据没有删除

<form method="post" class="delete_form" action=" url('/data', $row['id']) " id="studentForm_$row['id']">
   method_field('GET') 
    csrf_field() 
  <button type="submit" class="btn btn-danger"> trans('Delete') </button>
</form>
               
  public function destroy($id)
  
    dd($id);
    $student = Student::where('id',$id)->delete();
    return redirect('/data/id')->with('success', 'Data Deleted');
  


Route::get('/data/id','App\Http\Controllers\StudentController@index');
Route::delete('/data/id','App\Http\Controllers\StudentController@destroy');

【问题讨论】:

您的表单发送的是 POST 请求,而不是 GET 你通过 POST 搜索看到 method="post",删除后你也不能重定向到已删除的 id 永远不要使用 GET 进行删除。机器人可以访问 GET,然后您可能会丢失数据。 您还应该删除dd($id);,因为它会退出您的脚本,之后的代码将不会被执行 请说明究竟您想要实现什么 【参考方案1】:

表单必须通过delete方法提交

<form method="POST" action=" url('/data', $row['id']) "> 
    @method('DELETE')
    @csrf
  <button type="submit" class="btn btn-danger"> trans('Delete') </button>
</form>

更多详情可以在这里找到:https://laravel.com/docs/8.x/routing#form-method-spoofing

【讨论】:

但我使用 delete 方法会引发错误,Get 方法正在工作,但问题是帖子拒绝删除并且没有显示错误,所以我很想得到另一个合适的答案。谢谢。 我认为这里的问题不是它应该来自路线的方法嗯我不认为控制器有任何问题,但您可以检查是否有然后让我们知道前进的方向。 你可以试试 dd($student) 看看输出什么? 你可以试试 if($student) then redirect【参考方案2】:

这就是我终于得到答案了 我运行了以下命令:

php artisan route:clear
php artisan route:list

然后它给了我建议的方法,并为“Controller@destroy”路由显示了删除方法,然后我从“get”方法更改为“delete”方法。然后,我的帖子就可以删除了。

【讨论】:

以上是关于如何使用 get 方法删除此 Laravel 表单的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 的 POST 表单上发送信息时出错

laravel向我显示此错误此路由不支持POST方法。支持的方法:GET,HEAD,PUT,DELETE

此路由不支持 GET 方法。支持的方法:POST。拉拉维尔 8

Laravel 8 - 此路由不支持 POST 方法。支持的方法:删除

如何在不使用请求的情况下删除 Laravel 5.3 中的会话?

在Laravel中提交POST表单后出现302错误