本篇就一点一点教大家写一个无限级分类出来,其实掌握一个知识,最主要的是要掌握无限级分类的逻辑,那么写起来就很容易的多了。
首先看数据库表:xp_cate
控制器:CateAction.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
|
<?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( '添加栏目失败' ); } } else { $this ->error( $cate ->getError()); } }} ?> |
模型:CateModel.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php class CateModel extends Model{ //对应数据库中的表xp_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 ; } } ?> |
模板:index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
< form action = "/Article/add" method = "post" > 请选择父级栏目:< select name = "pid" size = "20" > < option value = "0" >根栏目</ option > < volist name = "alist" id = "vo" > < option value = "{$vo['id']}" > < for start = "0" end = "$vo['count']" > </ for > {$vo['name']} </ option > </ volist > </ select >< br /> 新的栏目名称:< input type = "text" name = "name" />< br /> < input type = "submit" value = "添加栏目" /> </ form > |
显示结果如下:
有没有掌握无限级分类的逻辑,上文分享的thinkphp无限级分类代码,希望对大家的学习有所帮助。