• 技术文章 >后端开发 >php教程

    ThinkPH实现批量删除栏目代码分享

    小云云小云云2018-02-12 10:39:51原创779
    本文主要和大家分享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字符串,再进行删除就大功告成了。

    相关推荐:

    利用Tp删除栏目

    以上就是ThinkPH实现批量删除栏目代码分享的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:ThinkPH 栏目 删除
    上一篇:PHP观察者模式的实现代码 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php对称加解密的5个问答小结• 想请问一下印证的有关问题• php 之 cookie 跟 session 简单解读(笔记) • 注册信息添加到数据库,该怎么处理 • 请问下REWRITE模式开启为什么会没有作用?
    1/1

    PHP中文网