利用Tp刪除欄目

來源:互聯網
上載者:User
前段時間發表了一個刪除欄目的隨筆,當時實現的功能是刪除一條資訊,這次來實現一下大量刪除欄目。

我們需要達到的是這樣一個效果:

選中大量刪除按鈕後可以選中所有該頁面的欄目,這個是前端頁面的實現,在這裡就不多說了,我們直接進入正題:大量刪除的功能。

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('未選中任何內容,請重試!');        }    }

這就是我們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字串,再進行刪除就大功告成了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.