ThinkPHP运用递归实现无限级栏目分类
时间:2014-08-01 13:57:22
收藏:0
阅读:3815
本例中,只加入能实现效果的内容,其他额外内容视情况添加。
1.首先,创建栏目表(column)
1 2 3 4 5 6 7 8 9 10 | CREATE TABLE `column` (`id` int UNSIGNED NOT NULL AUTO_INCREMENT ,`cname` varchar(30) NULL ,`pid` int NULL DEFAULT 0 ,PRIMARY KEY (`id`))ENGINE=MyISAMDEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ciCHECKSUM=0DELAY_KEY_WRITE=0; |
插入几条测试数据

这个很容易理解,就是pid等于id的即为其子栏目。这个就不用说了吧~
2.在控制器中将所有栏目查询出来
$result=M(‘column‘)->select();
3.重要的一步,就是利用递归将其下的子栏目,以数组形式压入。我们用如下函数实现
我们只要将第二步查出的数据运用这个函数,就会显示为下面这样的格式
$list=column_merge($result);
dump($list);

因为前台也会涉及这个函数,所以我们将这个函数写在function.php文件中,然后将文件放在应用目录下(默认Application)的Common/common文件夹中,这样前台和后台就
可以调用此函数了
4.在模板显示
先在控制器将数组分配过去
$result=M(‘column‘)->select();
$this->list=column_merge($result);
然后在模样中输出
1 2 3 4 5 6 | <volist name=‘list‘ id=‘top‘> <h2>{$top.cname}</h2> <volist name=‘top.son‘ id=‘son‘> <h4>{$son.cname}</h4> </volist></volist> |
至此,我们的基本效果就实现了。其他效果自行添加
张盖盖博客 http://www.zhanggaigai.com/b/1.html
评论(0)