奪命雷公狗TP3.2.3商城17-----無限極分類刪除(玩法2:欄目和欄目下的子級欄目都刪除)

首先咱們來到模版下對Cate的模型下進行添加兩個函數,使用遞歸的方法將他的子級欄目的id取出來:php

<?php
namespace Admin\Model;
use Think\Model;
class CateModel extends Model {
    protected $_validate = array(
        array('catename','require','分類名稱不能爲空',1)
    );
    //定義一個方法,獲取樹狀的分類信息
    public function cateTree(){
        $cats = $this->order('id desc')->select();
        //經過tree裏面的方法進行排序
        return $this->tree($cats);
    }
    public function tree($arr,$pid=0,$level=0){ //$level是本身定義出來的
        static $tree = array();
        foreach($arr as $v){
           if($v['pid']==$pid){
                //說明找到,保存
                $v['level'] = $level;
                $tree[] = $v;
                //繼續找
                $this -> tree($arr,$v['id'],$level+1); //這裏的cate_id表的id
            }
        }
        return $tree;
    }


    //這裏至關於一個刪除欄目的中間件
    public function getchild($cateid){
        $data = $this -> select();
        return $this -> getchildres($data,$cateid);
    }
    //這裏直接使用遞歸刪除
    public function getchildres($data,$cateid){
        static $ret = array();
        $ret[] = $cateid;
        foreach($data as $k => $v){
            if($v['pid'] == $cateid){
                $ret[] = $v['id'];
                $this -> getchildres($data,$v['id']);
            }
        }
        return array_unique($ret);//array_unique主要是用於去除重複的
    }
}

 

而後咱們來控制器下進行編輯del方法:數組

 

public function del(){
            $mod = D('cate');
            $id = I('id');
            $getchildres = $mod -> getchild($id);
            $getchildres = implode(',', $getchildres); //implode數組用,號分割組裝成字符串
            //dump($getchildres);die;
            if($mod -> delete($getchildres)){
                $this -> success('刪除欄目成功');
            }else{
                $this -> error('刪除欄目失敗');
            }
        }

 

這樣便可實現傳說中的霸道刪除了,嘻嘻。。。函數

相關文章
相關標籤/搜索