今天自己在写后台的时候需要把以前上传的测试文章全部删除掉,但是利用 【操作】里面的一个个删除比较慢,因此想出一个批量删除的解决方案。
首先在前端页面里面建立一个表单,这个表单是把你选中的单选按钮提交到控制器的操作函数
<form action="__URL__/deleteSelected" method="post"></form>
批量删除前端用了一个js 的简单验证
<a href="#" onclick="delAll()" class="delete"><span class="glyphicon glyphicon-trash"> </span> 批量删除</a>
<td class="tc"><input name="id[]" value="<{$voList.txt_id}>" type="checkbox"></td>
<script> function delAll(){ var chk_value =[]; $('input[name="id[]"]:checked').each(function(){ chk_value.push($(this).val()); }); console.log(chk_value); var submit = confirm(chk_value.length==0 ?'你还没有选择任何内容!':'您是否需要将id '+chk_value+'删除'); if (submit) { window.location.href = "__URL__/deleteSelected/id/"+chk_value; return false; } else{ return false; }; } </script>
主要功能实现是通过后台的操作来完成的,代码如下
//批量删除 public function deleteSelected(){ $getid = $_REQUEST['id']; //获取选择的复选框的值 dump($getid); if (!$getid) $this->error('未选择记录'); //没选择就提示信息 $getids = implode(',', $getid); //选择一个以上,就用,把值连接起来(1,2,3)这样 $id = is_array($getid) ? $getids : $getid; //如果是数组,就把用,连接起来的值覆给$id,否则就覆获取到的没有,号连接起来的值 //最后进行数据操作, $Result = D("Txt")->delete($id); $say = '删除成功'; if ($Result === false) { $this->error('操作失败'); } else { $this->success($say); } }