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>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号