无限极分类的具体实现

无限极分类的基础逻辑就不提了,直接从代码层开始

首先,创建数据库要绑定一个父级id(pid)

无限极分类的具体实现_第1张图片

1,数据库创完之后,就是业务层了,框架使用的是laravel5.7

model层

get();
        //使用self来调用无限极分类的方法,并实现绑定,
        //传入参数 $info:数据库查询的全部数据
        // $pid:定义的一个父级id,与下面list_level()方法里无限极分类里调用的父级pid相互关联
        // $level:定义一个等于0的变量,赋予下面无限极分类初始值
        $result=self::list_level($info,$pid=0,$level=0);
        return $result;
    }

    //提供一个无限极分类的方法
    public static function list_level($data,$pid,$level)//三个参数与上面index方法里面穿的参数相对应
    {
        //电柜一个静态变量,存储一个空数组,用静态变量,是因为静态变量不会被销毁,
        //会保存之前保留的值,普通变量在函数结束时,会死亡,生命周期函数开始到函数结束,再次调用重新开始生长
        //保存一个空数组
        static $array=[];
        foreach($data as $k=>$v){
            //进行判断如果pid=0,那么为顶级父类,放入定义的空数组里
            if($pid==$v->pid){
                //添加空格进行分层
                $v->level=$level;
                $array[]=$v;
                //递归点,调用自身,把顶级父类的主键id作为父类进行再调用循环,空格+1
                self::list_level($data,$v->id,$level+1);
            }
        }
        return $array;
    }

    //提供一个添加的方法
    public static function add($data)
    {
        $info=DB::table('district')->insert($data);
        return $info;
    }

}

Controller层

$data]);
    }

    //展示前台添加页面,并把model层接受到的数据出入前台
    public function add()
    {
        $data=District::index();
        return view('district_add',['data'=>$data]);
    }

    //调用model,实现添加功能
    public function addsave(Request $request)
    {
        $result=$request->only('pid','name');
        $info=District::add($result);
        if($info){
            return redirect('index');
        }else{
            return redirect('add');
        }
    }


}

试图展示页面




    
    
    
    Document


添加

    @foreach($data as $v)
        
    @endforeach
id name pid
{{$v->id}} {{str_repeat('|-',$v->level)}}{{$v->name}} {{$v->pid}}

视图添加页面




    
    
    
    Document


{{csrf_field()}}
选择地区
分类名称

好了,到这里一个简单的无限极分类就结束了,具体效果见下图

展示页面和添加页面

无限极分类的具体实现_第2张图片

无限极分类的具体实现_第3张图片

 

你可能感兴趣的:(无限极分类的具体实现)