您当前的位置: 首页 >  分类

苗先生的PHP记录

暂无认证

  • 0浏览

    0关注

    190博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

无限极分类 php

苗先生的PHP记录 发布时间:2019-08-19 15:33:25 ,浏览量:0

无限极分类 数据表 id name pid 三个字段,pid是上级分类的id,是核心

分类实现自定义树形的格式

1 ***1.1 *******1.1.1 2 ***2.1 ********2.1.1 ***2.2

这种格式↑

下面是代码 model层的静态方法 直接Model::function即可

 //递归调用  --无限极分类 格式化
    public static function catetree($pid = 0, &$res = [], $level = 0)
    {
        $data = self::all(['pid'=>$pid]);
        foreach ($data as $k=>$v){
            $v['cate_name'] = str_repeat('● — — ',$level).$v['cate_name'];
            $res[]  =  $v;
            self::catetree($v['id'],$res,$level+1);
        }
        return $res;
    }


    // 获取当前id下所有的子分类
    public static  function  getChildrenId($id,&$res = []){
        $data = self::all(['pid'=>$id]);
        foreach ($data as $k=>$v){
                $res[] = $v['id'];
                self::getChildrenId($v['id'],$res);
        }
        return $res;
    }
下面是控制器的示范代码

首先是树形显示的 , 至于视图中直接正常volist循环即可 {volist id=“vo” name=“data”}

public function list()
    {

        $data = CateModel::catetree();
        $this->view->assign('data',$data);
        return $this->view->fetch('list');
    }
到了删除的具体实现了 这是我自己反复写的,这样提示严谨些
public function delete($id)
    {
        //获取子分类的id  (数组)
        $childrenId = CateModel::getChildrenId($id);
        //如果有子分类,则删除子分类
        if ($childrenId){
            $delchild = CateModel::destroy($childrenId);
        }
        $del = CateModel::destroy($id);
        if (isset($delchild) && $del){
                $this->success('删除栏目及子栏目成功!','cate/list');
        }
        else{
            if ($del){
                $this->success('删除栏目成功!','cate/list');
            }else{
                $this->error('删除栏目失败!','cate/list');
            }
        }
    }
关注
打赏
1665468453
查看更多评论
立即登录/注册

微信扫码登录

0.0402s