本篇就一点一点教大家写一个无限级分类出来,其实掌握一个知识,最主要的是要掌握无限级分类的逻辑,那么写起来就很容易的多了。
首先看数据库表: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{
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' ];
}
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无限级分类代码,希望对大家的学习有所帮助。