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操作。
这就是我们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字符串,再进行删除就大功告成了。


猜你喜欢
- 一、前言说明今天看到微信群里一道六年级数学题,如下图,求阴影部分面积看起来似乎并不是很难,可是博主添加各种辅助线,写各种方法都没出来,不得已
- 题主Vue小白,入门demo时想在其中使用jQuery(当然可能是不推荐的做法哈,毕竟俩儿的风格不一样,但万一你就需要呢 _^ ^_),结果
- 本文实例为大家分享了js Tab选项卡切换效果,供大家参考,具体内容如下<!DOCTYPE html><html lang
- 在ubuntu下面发生的原因是:开了多个pycharm,关掉那个new project选项是灰色的,剩下的那个pycharm的new pro
- “深入认识Python内建类型”这部分的内容会从源码角度为大家介绍Python中各种常用的内建类型。
- 版本 0.9来自 http://onewww.net说明:当焦点不在表格内的input时,回车键复制最后一行,delete删除键最后一行选择
- 上大学的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的。https://www.jb51.net/article/
- 最近项目用到了bootstrap框架,其中前端用的校验,采用的是bootstrapvalidator插件,也是非常强大的一款插件。我这里用的
- 先说明,我并不知道出现坑的原因是什么。我只是按照别人的写法就连上了。我的处境是这样的我的前台是用了 vue 全家桶,启动了一个 9527 端
- 目录1. pgzeropgzero的安装2. 游戏设计的过程3. pgzero基础4. pgzero游戏例子5. 总结6. 参考资料1. p
- 前言读取站点资料数据对站点数据进行插值,插值到规则网格上绘制EOF第一模态和第二模态的空间分布图绘制PC序列关于插值,这里主要提供了两个插值
- 示例1:文件打包,上传与校验我们时常做一些文件包分发的工作,实施步骤一般是先压缩打包,在批量上传至目标服务器,最后做一致性校验,本案例通过p
- 1 发送文本信息'''加密发送文本邮件'''def sendEmail(from_addr,
- Django配合python进行requests请求前言在我们写代码的时候,经常会用到前后端分离开发的方法,例如微信小程序,安卓,网站等等&
- 本文已经收录于最新版的 《PyCharm中文指南》更多 PyCharm 使用技巧,可前往在线文档学习:《PyCharm 中文指南》2.0 在
- 下面看下python调用函数加括号和不加括号的区别,具体代码如下所示; def bracket(data):return dat
- 前言最近在评估项目时,要开启评估平台,查看平台和保存平台,感觉非常繁琐,开发了一款可以获取评估平台数据,查看项目排期和直接保存数据到数据库的
- 窗口的透视变换效果 当我们点击Win10的UWP应用中的小部件时,会发现小部件会朝着鼠标点击位置凹陷下去,而且不同的点击位置对应着不同的
- 由于GTID的优势,我们需要将传统基于file-pos的复制更改为基于GTID的复制,如何在线变更成为我们关心的一个点,如下为具体的方法:目
- Python的字符集处理实在蛋疼,目前使用UTF-8居多,然后默认使用的字符集是ascii,所以我们需要改成utf-8查看目前系统字符集im