如何在Laravel循环中批量修改单选按钮对应的数据状态
批量修改Laravel产品状态(循环内单选按钮批量编辑)
需要实现循环内多个单选按钮的批量编辑产品状态功能,现有前后端代码无法正常完成批量更新,以下是修正后的代码:
前端视图代码修正
<?php $i = 1; ?> @foreach ($products as $product) <tr> <td scope="row">{{ $i++ }}</td> <td>{{ $product->name ?? '' }}</td> <td><img src="{{asset($product->image)}}" class="product-img-2" alt="product img"></td> <td> <div class="col-md-2"> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="status[{{$product->id}}]" value="active" {{($product->status == 'active') ? 'checked' : '' }} id="Active-{{$product->id}}"> <label class="form-check-label" for="Active-{{$product->id}}"> active </label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" type="radio" name="status[{{$product->id}}]" value="deactive" {{ ($product->status == 'deactive') ? 'checked' : '' }} id="Deactive-{{$product->id}}"> <label class="form-check-label" for="Deactive-{{$product->id}}"> deactive </label> </div> </div> </td> </tr> @endforeach
前端修改说明:
- 移除多余的隐藏ID输入框,单选按钮的
name="status[{{$product->id}}]"已将产品ID作为数组键传递给后端 - 为单选按钮和对应标签设置唯一ID,避免多个产品的单选按钮ID冲突导致交互异常
后端控制器方法修正
public function active_deactive(Request $request){ if (isset($request->status) && is_array($request->status)) { foreach ($request->status as $productId => $status) { Product::where('id', $productId)->update(['status' => $status]); } } return Redirect()->back(); }
后端修改说明:
- 循环
$request->status数组时,同时获取产品ID(数组键)和对应的状态值(数组值) - 针对每个产品ID直接更新状态字段,修复原代码中错误引用参数的问题
- 增加数组有效性判断,确保处理的是合法数据
内容的提问来源于stack exchange,提问作者abdulmonem alnasrabi
相关产品推荐
相关产品推荐

