本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP常用功能之一,非常具有实用价值。现将完整实例分享给大家,供大家参考。

ThinkPHP无限分类的使用
具体实现步骤如下(本文采用TP框架的3.1.3版本):
(推荐教程:thinkphp教程)
第一步:表aoli_cate如下图所示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | CREATE TABLE `fenlei` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(255) DEFAULT NULL COMMENT '父id',
`pid` int(255) NOT NULL COMMENT '名字',
`path` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
insert into fenlei(id,name,pid,path) values
(1,’新闻’,0,’0’),
(2,’中国新闻’,1,’0-1’),
(3,’美国新闻’,1,’0-1’),
(4,’北京新闻’,2,’0-1-2’),
(5,’华盛顿新闻’,3,’0-1-3’),
(6,’日本新闻’,1,’0-1’);
|
登录后复制

第二步: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 30 31 32 33 34 35 36 37 | <?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());
}
}
}
?>
|
登录后复制
第三步:模型部分
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 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php
class CateModel extends Model{
protected $_auto = array (
array ('path','tclm',3,'callback'),
);
function tclm(){
$pid =isset( $_POST ['pid'])?(int) $_POST ['pid']:0;
if ( $pid ==0){
$data =0;
} else {
$list = $this ->where( "id=$pid" )->find();
$data = $list ['path'].'-'. $list ['id'];
}
return $data ;
}
}
?>
|
登录后复制
第四步:view视图部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!--提交到本类的add方法-->
<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>
<!--以字段 count 统计出来的,path字段里面含的字符串来做总数-->
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无限分类的使用的详细内容。更多信息请关注PHP中文网其他相关文章!