Blogger Information
Blog 38
fans 0
comment 3
visits 43810
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
tp5.1 无限极分类
意外的博客
Original
3309 people have browsed it

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>


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
2 comments
移动用户-4651795 2019-07-16 16:17:15
1
2 floor
移动用户-4651795 2019-07-16 15:55:51
请教下大佬,这两个方法得出来的数据结构都是平级的,如果要得到树状的数据结构,类似下面这种 ,也就是嵌套的数据,该怎么弄? dpmtRoles: [ { id: 1, // 部门ID label: '管理部', children: [ { id: 3, // 岗位id label: '系统管理员', children: [ { id: 6, ... } ] } ] }, { id: 2, // 部门ID label: '营销部', children: [ {
1 floor
Author's latest blog post