无限级分类 增加

本文介绍如何在ThinkPHP3.2框架下进行无限级分类的增加操作,涉及数据库设计,包括id和parentid字段的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先数据库字段要有id 。。。。parentid这些字段


如何做出这个样子呢,这就需要递归,控制器里面的add方面应该这样写
public function add(){
        $pri=D('Privilege');
      if(IS_POST){
          if($pri->create()){
            if($pri->add()){
              $this->success('新增权限成功',U('lst'));
            }else{
              $this->error('新增权限失败');
            }
          }else {
            $this->error($pri->getError());
          }

        return ;
      }
      $pris=$pri->pritree();
      // dump($pris);
      // die;
      $this->assign('pris',$pris);
      $this->display();
    }

 $pris=$pri->pritree();
这个函数在model层面里面写
public function pritree(){
      $data=$this->select();
      // dump($data);
      // die;
      return $this->resort($data);
    }

    public function resort($data,$parentid=0,$level=0){
      static $ret=array();
      foreach($data as $k => $v){
        if($v['parentid']==$parentid){
          $v['level']=$level;
          $ret[]=$v;
          $this->resort($data,$v['id'],$level+1);
        }
      }
      return $ret;
    }

解释一下这两个函数是什么意思,第一个函数是找出改对象里面所有的数据
然后把数据传入递归函数里面,声明一个静态数组,循环语句

$v['parentid']
就是这个意思,找出等于0的子栏目,这些栏目都是顶级栏目,level代表是第几层,
然后存在ret这个数组里面,递归,最后返回这个数组,给add方法
  $pris=$pri->pritree();
      // dump($pris);
      // die;
      $this->assign('pris',$pris);
      $this->display();

赋值给前台前台输出
 <volist name="pris" id="vo">
    <option value="{$vo.id}"><?php echo str_repeat('-',$vo['level']*2); ?>{$vo.priname}
    </option>
</volist> 
就能显示那种分层的感觉,str_repeat函数代表重复
前台这样展示
<volist name="pris" id="vo">
      <tr>
        <td class="tc"><input name="ids[]" class="check" value="{$vo.id}" type="checkbox"></td>
           <td>{$vo.id}</td>
           <td>
             <a target="_blank" href="#" title="">
                 <if condition="$vo['level'] neq 0">
                    |</if>
                      <?php echo str_repeat('-',$vo['level']*2); ?>{$vo.priname}</a>
                 </td>
                  <td>{$vo.moname}</td>
                  <td>{$vo.coname}</td>
                   <td>{$vo.aname}</td>
                 <td>{$vo.parentid}</td>
                <td>
                 <a class="link-update" href="__CONTROLLER__/edit/id/{$vo.id}">修改</a>
                 <a class="link-del" οnclick="return confirm('确定要删除本权限及其子权限吗?');" href="__CONTROLLER__/del/id/{$vo.id}">删除</a>
         </td>
      </tr>    
 </volist>

public function lst(){
      $pri=D('Privilege');
      $pris=$pri->pritree();
      // dump($pris);
      // die;
      $this->assign('pris',$pris);
		  $this->display();
    }

就这样无限级分类的添加算是完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值