入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

后台无限级分类添加的实现方式

创建时间:2018-01-11 投稿人: 浏览次数:457

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("&nbsp;",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();                      
        }
    }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。