后台无限级分类添加的实现方式
1.数据库设计添加字段父级分类ID号parent_id和path路径,0代表为根分类(一级分类),一个‘_’代表二级分类:
2.添加分类模板修改为选择父级分类名:
模板中添加parent_id提交,如下:
<tr>
<th width="120"><i class="require-red">*</i>上级分类:</th>
<td>
<select name="parent_id" class="required">
<option value="">请选择</option>
<!--还未做非空验证-->
<foreach name='cateList' item='val'>
<option value="{$val.cate_id}">{:str_repeat(' ',substr_count($val['path'],'_')*4)}{$val.cate_name}</option>
</foreach>
</select>
</td>
</tr>
3.后台接收进行查询,拼接parent_id的组成path,然后进行数据入库;
/*分类添加方法
author:ren
return:void
*/
public function add(){
//如果POST了提交则入库
if(IS_POST){
$data=I('post.');
// 若没设置父级,则自动识别为根分类
if(empty($data['parent_id'])){
$data['path']=0;
}else{
//查询父级ID的path字段值
$parentPath=M('category')->where("cate_id='$data[parent_id]'")->getField('path');
//拼接添加分类的path值
$data['path']=$parentPath.'_'.$data['parent_id'];
}
$result=M('category')->add($data);
if($result){
$this->success('添加成功!',U('Category/index'));
}else{
$this->error("添加出错...");
}
}else{
//没提交动作则正常显示分类添加模板
$cateList=D('category')->getCategoryTree();
$this->assign('cateList',$cateList);
$this->display();
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步