夺命雷公狗TP3.2.3商城17-----无限极分类删除(玩法2:栏目和栏目下的子级栏目都删除)

首先我们来到模版下对Cate的模型下进行添加两个函数,使用递归的方法将他的子级栏目的id取出来:

<?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(‘删除栏目失败‘);
            }
        }

这样即可实现传说中的霸道删除了,嘻嘻。。。

时间: 2024-10-13 00:22:57

夺命雷公狗TP3.2.3商城17-----无限极分类删除(玩法2:栏目和栏目下的子级栏目都删除)的相关文章

夺命雷公狗TP3.2.3商城15-----无限极分类修改

我们回到控制器下,修改下edit public function edit(){ $id = I('id'); $mod = D('cate'); $vos = $mod -> find($id); $this -> assign('vos',$vos); $this -> display(); } 然后我们到模版中,现将他的名字显示出来: 然后测试看看效果如何: 测试成功,但是上级栏目还没好,所以我们需要回到控制器中用模版里面的方法来取出所有的数据: public function e

夺命雷公狗TP3.2.3商城13-----无限极分类添加

由于我们需要使用到的是模型来验证一下,所以我们先到  D:\phpStudy\WWW\shop\WEB\Admin\Model   下创建一个CateModel.class.php <?php namespace Admin\Model; use Think\Model; class CateModel extends Model { protected $_validate = array( array('catename','require','分类名称不能为空',1) ); } 然后来设置

夺命雷公狗TP3.2.3商城14-----无限极分类列表页

其实列表页也是和添加一样都是依赖于我们模型中定义的函数的查询方法进行查询的: <?php namespace Admin\Model; use Think\Model; class CateModel extends Model { protected $_validate = array( array('catename','require','分类名称不能为空',1) ); //定义一个方法,获取树状的分类信息 public function cateTree(){ $cats = $thi

夺命雷公狗TP3.2.3商城16-----无限极分类删除(玩法1:有子级分类的不能删除)

无限极分类的删除和别地方的删除有一些地方不同,比如,别的地方删除就是直接干掉即可,但是我们的无限极分类则不然,因为还有子级栏目的,我们就不能让他删除,否则就有一大群无家可归的子级分类了: 那么首先来到 列表页  的模版下,将他的ID传过去: 这样我们即可在 控制器下的 del  方法接收得到ID了,然后到控制器下进行处理: public function del(){ $id = I('id'); $mod = D('cate'); //查询下该栏目还有木有子栏目 $data = $mod ->

夺命雷公狗TP3.2.3商城10-----中间层的创建,防止跨目录访问

我们在D:\phpStudy\WWW\shop\WEB\Admin\Controller  目录下创建一个创建一个CommonController.class.php的中间层,让后让后台别的控制器都直接继承CommonController这个控制器即可决解跨目录访问的问题: <?php namespace Admin\Controller; use Think\Controller; class CommonController extends Controller{ //这个方法主要解决别人跨

夺命雷公狗TP3.2.3商城9-----后台退出

我们直接在Login这个控制器里写多一个方法即可完成退出了, <?php namespace Admin\Controller; use Think\Controller; class LoginController extends Controller { //后台登录 public function index(){ if(IS_POST){ $username = I('admin'); $password = I('pwd'); if(D('admin')->checkUser($us

夺命雷公狗TP3.2.3商城8-----管理员登录并且保存session

首先我们在D:\phpStudy\WWW\shop\WEB\Admin\Controller  目录下创建LoginController.class.php,登录和注销都是在这个控制器下执行的: 然后我们对她进行编辑: 然后到  D:\phpStudy\WWW\shop\WEB\Admin\View  目录下抽奖login的文件夹,再将我们准备好的模版拉进去即可... 再将里面的样式都改一下即可.完成后如下所示: 然后我们在控制器下接收下post过来的数据在发送给Model 来进行处理,如下所示

夺命雷公狗TP3.2.3商城3-----数据库的创建以及连接

然后我们来到TP中配置一下数据库连接    D:\phpStudy\WWW\shop\WEB\Common\Conf: <?php return array( //'配置项'=>'配置值' //系统中允许访问的模块(前后台) 'MODULE_ALLOW_LIST' => array('Home','Admin'), //配置默认进入模块Home 'DEFAULT_MODULE' => 'Home',//默认模块 //禁止在模版中使用php代码 默认为false //'TMPL_DE

夺命雷公狗TP3.2.3商城11-----后台头部和左侧导航分离

我们来将网站后台的头部和左侧的导航分离出来: 然后在模版中找到类为:topbar-inner clearfix 的地方: 然后我们在然后在D:\phpStudy\WWW\shop\WEB\Admin\View里面创建一个Public的目录,然后在创建一个header.html的文件,将这段代码直接给放进去即可... 然后再回到提取出来的地方使用  TP  为我们预留的 include 标签连接取来: 然后再来访问看看效果如何: 显示正常,左侧导航的原理其实也是一样的...