博主信息
博文 38
粉丝 0
评论 3
访问量 51021
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
tp5.1 无限极分类
意外的博客
原创
3575人浏览过

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
2条评论
移动用户-4651795 2019-07-16 16:17:15
1
2楼
移动用户-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楼
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学