ThinkPHP删除栏目(实现批量删除栏目)

作者:jingxian 时间:2024-06-07 15:34:01 

前段时间发表了一个删除栏目的随笔,当时实现的功能是删除一条信息,这次来实现一下批量删除栏目。

我们需要达到的是这样一个效果:

ThinkPHP删除栏目(实现批量删除栏目)

选中批量删除按钮后可以选中所有该页面的栏目,这个是前端页面的实现,在这里就不多说了,我们直接进入正题:批量删除的功能。

1.前端页面这里也有一个小小的点,就是选择框的name值应给给他赋值为一个id的数组,value值为该栏目的id。

2.我们在控制器中单独写一个批量删除的方法


public function privilege_bdel(){
 $ids = I('ids');
 $pri = D('privilege');
 $ids = implode(',', $ids);
 if($ids){
  if($pri->delete($ids)){
   $this->success('批量删除栏目成功!',U('Privilege/privilege_lst'));
  }else{
   $this->error('批量删除栏目失败,请重试!');
  }
 }else{
  $this->error('未选中任何内容,请重试!');
 }
}

这里要将传过来的id数组转化为以逗号分隔的字符串如:1,2,3,这样可以直接进行delete操作。

ThinkPHP删除栏目(实现批量删除栏目)

这就是我们dump出来options的结果,这条也是我们用来判断删除时是单个删除还是批量删除的依据,如果options[where][id]是一个数组的话,则说明进行的是批量删除,否则就是单个删除。

3.在模型中对删除前构造函数的修改



public function _before_delete($options){
 //批量删除
 if(is_array($options['where']['id'])){
  $arr = explode(',', $options['where']['id'][1]);
  $sonpri = array();
  foreach ($arr as $k => $v) {
   $sonpri2 = $this->childid($v);
   $sonpri = array_merge($sonpri,$sonpri2);
  }
  $sonpri = array_unique($sonpri);
  $chilrenids = implode(',', $sonpri);
 }else{//单个删除
  $chilrenids =$this->childid($options['where']['id']);
  $chilrenids = implode(',', $chilrenids);
 }
 if($chilrenids){
  $this->execute("delete from ed_privilege where id in($chilrenids)");
 }
}

在这里我们写出批量删除的代码(单个删除之前已经写过,不再提)

将传过来的字符串转化为不带逗号的数组形式存在$arr中,建立一个空数组$sonpri,然后foreach遍历,这里先查找出所有的子栏目id(会用childid函数),存入$sonpri2数组中 ,再将$sonpri和$sonpri2合并为一个数组,使用array_merge()函数完成,这样我们才算是获取到了所有子栏目的id,但是我们所获取的id组中,会出现许多重复的id,所以这里我们还要进行去重的操作,使用array_unique()函数。最后再进行一次数组的拆分,得到id字符串,再进行删除就大功告成了。

标签:ThinkPHP,删除,栏目
0
投稿

猜你喜欢

  • Ubuntu下Anaconda和Pycharm配置方法详解

    2022-06-16 21:11:43
  • pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解

    2021-06-03 09:28:09
  • Go系列教程之反射的用法

    2024-04-25 15:25:32
  • Django MTV和MVC的区别详解

    2023-06-08 10:15:19
  • MySql8.0以上版本正确修改ROOT密码的方法

    2024-01-22 12:24:40
  • asp让网站自动识别手机访问跳转至手机网站

    2014-12-06 09:36:02
  • asp函数收藏

    2009-04-21 13:10:00
  • Python多线程的使用详情

    2023-05-29 15:13:36
  • JavaScript实现图片无缝滚动效果

    2024-05-02 16:10:49
  • mysql 时间戳的用法

    2024-01-18 03:11:37
  • C#连接Oracle数据库字符串(引入DLL)的方式

    2024-01-25 16:10:07
  • 使用Python将数组的元素导出到变量中(unpacking)

    2022-01-12 10:11:43
  • 用AspJpeg调整文字水印透明,生成图片水印的效果

    2008-12-29 19:43:00
  • 深入理解PyTorch中的nn.Embedding的使用

    2023-01-25 11:54:02
  • Python字符串的字符转换、字符串劈分、字符串合并问题分析

    2021-07-22 19:14:24
  • perl获取日期与时间的实例代码

    2023-03-30 23:57:01
  • 基于Python实现西西成语接龙小助手

    2023-04-02 22:12:04
  • Python中OpenCV图像特征和harris角点检测

    2023-08-04 22:32:56
  • 如何测试字符串的长度?

    2009-11-11 20:02:00
  • 学ASP应该注意ASP程序书写的规范标准

    2008-10-17 10:16:00
  • asp之家 网络编程 m.aspxhome.com