本文实例讲述了thinkphp框架无限级栏目的排序功能实现方法。分享给大家供大家参考,具体如下:
题目中我们并没有说明是tp5的无限级排序还是tp3的无限级排序就是为了让小新手们明白,这些功能的实现跟你使用的框架是没有关系的,不管你是tp5还是tp3还是laravel还是yii框架都没有关系,我们强调的是思路,是解决问题的方法,演示的时候因为我在用tp3所以无所谓了。
无限级栏目的排序非常简单,这次以博文的方式分享给大家解决的思路。
上图:
上图是我们实现的无限级分类,我们要注意两个字段,id和排序sort字段,目前sort字段的值都是50,是默认值。接着为大家截图数据表结构
上图sort用来实现排序pid用来实现无限级分类
实现无限级分类的关键是我们对排序字段的写法,我们把整块代码拿到,但是用到的只有一行:
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
|
<form method= "post" action= "" > <table class = "table table-bordered table-hover" > <thead class = "" > <tr> <th width= "6%" class = "text-center" >ID</th> <th width= "6%" class = "text-center" >pid</th> <th width= "8%" class = "text-center" >排序</th> <th>栏目名称</th> <th width= "16%" class = "text-center" >操作</th> </tr> </thead> <tbody> <volist name= "cateRes" id= "cate" > <tr> <td align= "center" >{ $cate .id}</td> <td align= "center" >{ $cate .pid}</td> <td align= "center" > <input type= "text" name= "sort[{$cate.id}]" value= "{$cate.sort}" /></td> <td><?php echo str_repeat ( '-' , $cate [ 'level' ]*8);?>{ $cate .cate_name}</td> <td align= "center" > <a href= "" class = " rel=" external nofollow " btn btn-primary btn-sm shiny" > <i class = "fa fa-edit" ></i> 编辑 </a> <a href= "#" rel= "external nofollow" onClick= "warning('确实要删除吗', ”)" class = "btn btn-danger btn-sm shiny" > <i class = "fa fa-trash-o" ></i> 删除 </a> </td> </tr> </volist> <tr> <td colspan= "4" > <button type= "button" tooltip= "排序" style= "margin-left:225px; width:50px;" class = "btn btn-sm btn-azure btn-addon" >排序</button> </td> </tr> </tbody> </table> </form> |
上面的代码我们可以看出整个table是用form包裹的,因为我们要提交排序字段,所以需要表单。
我们实现无限极栏目排序的核心代码:
1
|
<input type= "text" name= "sort[{$cate.id}]" value= "{$cate.sort}" /> |
就是这一句,实际上我们是拼装了一个sort[]数组,整个数组的每个元素的键是当前栏目的id而值是当前栏目的排序的值,这样我们一旦提交数组就可以根据id修改sort了
完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public function lst(){ $cate =D( 'Cate' ); if (IS_POST){ //排序 $data =I( 'sort' ); foreach ( $data as $k => $v ) { $cate ->where( array ( 'id' => $k ))->save([ 'sort' => $v ]); } return ; } $cateRes = $cate ->cateTree(); //无限级分类树 $this ->assign([ 'cateRes' => $cateRes , ]); $this ->display( 'list' ); } |
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。