ThinkPHP自动填充实现无限级分类的方法

表aoli_cate如下图所示:

一、action部分:

aoli/Home/Lib/Action/CataAction.class.php文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
class CateAction extends Action{
   function index(){
     $cate =M( 'cate' );
     $list = $cate ->field( "id,name,pid,path,concat(path,'-',id) as bpath" )->order( 'bpath' )->select();
     foreach ( $list as $key => $value ){
        $list [ $key ][ 'count' ]= count ( explode ( '-' , $value [ 'bpath' ]));
     }
     $this ->assign( 'alist' , $list );
     $this ->display(); 
   }
   //添加栏目
   function add(){
     $cate = new CateModel();
     
     if ( $vo = $cate ->create()){
       if ( $cate ->add()){
         $this ->success( '添加栏目成功' ); 
       } else {
         $this ->error( '添加栏目失败' ); 
       }
       //dump($vo); 
     } else {
       $this ->error( $cate ->getError()); 
     }
   }
   
}
?>

二、模型部分:

aoli/Home/Lib/Model/CataModel.class.php文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
class CateModel extends Model{ //对应数据库中的表aoli_cate
   protected $_auto = array (
     array ( 'path' , 'tclm' ,3, 'callback' ), 
   );
   
   function tclm(){
     $pid =isset( $_POST [ 'pid' ])?(int) $_POST [ 'pid' ]:0;
     echo ( $pid );
     if ( $pid ==0){
       $data =0;
     } else {
       $list = $this ->where( "id=$pid" )->find();
       $data = $list [ 'path' ]. '-' . $list [ 'id' ]; //子类的path为父类的path加上父类的id
     }
     return $data
   }
}
?>

三、view视图部分

aoli/Home/Tpl/default/Cate/index.html页面如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
< form action = "__URL__/add" method = "post" >
  请选择父级栏目:< select name = "pid" size = "20" >
          < option value = "0" >根栏目</ option >
          < volist name = "alist" id = "vo" >
           < option value = "{$vo['id']}" >
             < php >
               for($i=0;$i<$vo['count'];$i++){
                 echo ' '; 
               }
             </ php >
             {$vo['name']}
           </ option >
          </ volist >
         </ select >< br />
  新的栏目名称:< input type = "text" name = "name" />< br />
  < input type = "submit" value = "添加栏目" />
</ form >

相信本文所述实例对大家ThinkPHP程序设计有一定的参考价值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值