You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中点击带图标删除按钮无法按ID删除数据问题求助

问题原因

  • 视图结构错误:删除按钮内部的<a>标签无内容,点击按钮时实际未触发<a>的跳转逻辑
  • 请求方法不匹配:路由定义为DELETE请求类型,而<a>标签默认发起GET请求,请求类型不匹配无法触发对应的控制器逻辑
  • 循环变量冲突:@foreach ($books as $books)写法错误,循环内会覆盖原本的集合变量,可能导致数据读取异常

解决方案(推荐,符合Laravel规范,保留原有按钮样式)

1. 修正视图代码

首先修正循环变量,再将删除按钮改为表单提交方式,完整视图代码如下:

@foreach ($books as $book) {{-- 修正循环变量名 --}}
<tr>
    <td>{{$book->id}}</td>
    <td>{{$book->name}}</td>
    <td>{{$book->year}}</td>
    <td>{{$book->publisher}}</td>
    <td>
        <button type="button" class="btn btn-info" title="details"><i class="fa fa-info" ></i></button>
        <button type="button" class="btn btn-warning" title="edit"><i class="fa fa-pencil" ></i></button>
        {{-- 新增DELETE请求表单 --}}
        <form action="{{ route('deletebook', $book->id) }}" method="POST" onsubmit="return confirm('Are you sure to delete this book?')" style="display: inline-block;">
            @csrf
            @method('DELETE')
            <button type="submit" class="btn btn-danger" title="delete">
                <i class="fa fa-trash"></i>
            </button>
        </form>
   </td>
</tr>
@endforeach

2. 可选优化控制器代码

可增加数据存在性判断,避免删除不存在的id时报错:

public function deleteBook($id) {
    DB::table('books')->where('id', $id)->delete();
    return redirect('home')->with('status', 'DELETE succesfully'); 
}

3. 路由无需修改

原有路由代码可正常使用:

Route::delete('/deleteBook/{id}','BooksController@deleteBook')->name('deletebook');

其他可选方案(不推荐,仅做参考)

如果不想用表单提交,可将路由改为GET类型,同时调整<a>标签结构包裹按钮:

  1. 修改路由:
Route::get('/deleteBook/{id}','BooksController@deleteBook')->name('deletebook');
  1. 修改删除按钮部分代码:
<a href="{{ route('deletebook',[$book->id])}}" onclick="return confirm('Are you sure to delete this book?')">
    <button type="button" class="btn btn-danger" title="delete">
        <i class="fa fa-trash"></i>
    </button>
</a>

该方案不符合RESTful规范,且存在爬虫误删数据的风险,不建议在生产环境使用。

内容的提问来源于stack exchange,提问作者Shabrina Nurdiani S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:24:01