博客列表 >tp5.1 无限极分类

tp5.1 无限极分类

意外的博客
意外的博客原创
2019年07月15日 23:38:363300浏览

1.创建表 必须要的字段 id shop pid 默认pid为0;

//在添加视图中:

//用jquery输出  $('#pid').val();    => 选中后输出值为'{$val.id}' 当前选中的主键id;
//那么 pid是等于 主键id 的; 
//假如 id等于1 pid默认为0 ,进行添加后 pid等于id 
//那么第二条数据 id=2 pid就等于1;

重点:
上级栏目:
	<select name="pid" id="pid">
		<option value="0">顶级栏目</option>
		{volist name='shop' id='val'}
			<option value="{$val.id}">{$val.shopname}</option>
		{/volist}
	</select><br>
	栏目名称:<input type="text" name="shopname" id="shopname"><br>	

2.无限极分类已经完成,接下来将层次显示出来;

//在模型中写入方法;

namespace app\bkadmin\model;
use think\Collection;
use think\Model;

        /*
	$result 数组的集合;
	pid  当前的父级id
	level 	设置分类之间的显示提示;
	*/
	//无限极分类; &:引用传递,这个符号不要缺少;
	public static function wu(&$result=[],$pid=0,$level=0){
		//默认查询pid为0是所有的数据;
		$res = ShopModel::where(['pid'=>$pid])->select();
		//将显示提示标识加2;
		$level += 2;
		// 将这些数据进行循环;
		foreach($res as $k => $v){
			//给每条数据中的栏目名称前面加一个标识,然后赋值给一个变量;
			$catename = '|--'.$v['catename'];
			//然后在在这个心变量前面在加一个显示提示;(在前面加两个空格);
			$v['catename'] = str_repeat("_",$level).$catename;
			//将处理好的结果放入到数组集合中;
			$result[] = $v;
			//默认pid为0的这一级已显示;
			//递归;用静态方法调用自己继续将下一级提示显示出来;
			self::wu($result,$v['id'],$level);
		}
		// return ($result);
		//将结果$result数组先转为对象,然后在转成数组;
		return Collection::make($result)->toArray();
		
	}

3.另外一种无限极层次显示;

 
 
 public function catetree(){
             //查询所有数据;
      $data=$this->select();
      return $this->sort($data);
    }

        /*
           $data 接收上面查询到的所有数据;
           pid  当前的父级id
	       level 	设置分类之间的显示提示;
        */
    public function sort($data,$pid=0,$level=0){
        static $arr=array();
        foreach ($data as $k => $v) {
            if($v['pid']==$pid){
                $v['level']=$level;
                $arr[]=$v;
                //$pid是等于主键id的;
                $this->sort($data,$v['id'],$level+1);
            }
        }
        return $arr;
    }
    
    
    //html中的代码;
<select name="pid">    
<option value="0">顶级栏目</option>    
    {volist name="cateres" id="cate"}    
        <option value="{$cate.id}">
            {if condition="$cate['level'] neq 0"}|{/if}<?php echo str_repeat('-', $cate['level']*4)?>
        {$cate.catename}
        </option>    
    {/volist}    
</select>


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
移动用户-46517952019-07-16 16:17:152楼
1
移动用户-46517952019-07-16 15:55:511楼
请教下大佬,这两个方法得出来的数据结构都是平级的,如果要得到树状的数据结构,类似下面这种 ,也就是嵌套的数据,该怎么弄? dpmtRoles: [ { id: 1, // 部门ID label: '管理部', children: [ { id: 3, // 岗位id label: '系统管理员', children: [ { id: 6, ... } ] } ] }, { id: 2, // 部门ID label: '营销部', children: [ {