本文以实例描述了ThinkPHP采用<volist>标签实现三级循环代码,具体操作步骤如下:
1. 三级循环需要三维数组,实现代码如下:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
|
function MakeTree( $pid , $level ) { $map [ 'pid' ] = $pid ; $map [ 'level' ] = $level ; $result = $this ->where( $map )->order( 'rank ASC' )->findall(); if ( $result ){ foreach ( $result as $key => $value ){ $title = $value [ 'alias' ]; $list [ $title ][ 'id' ] = $value [ 'id' ]; $list [ $title ][ 'pid' ] = $value [ 'pid' ]; $list [ $title ][ 'alias' ]= $value [ 'alias' ]; $list [ $title ][ 'title' ] = $value [ 'title' ]; $list [ $title ][ 'level' ] = $value [ 'level' ]; $list [ $title ][ 'state' ] = $value [ 'state' ]; $list [ $title ][ 'rank' ] = $value [ 'rank' ]; if ( $value [ 'level' ]<=3){ $list [ $title ][ 'child' ] = $this ->_MakeSonTree( $value [ 'id' ]); } } } return $list ; } function _MakeSonTree( $pid ) { $map [ 'pid' ] = $pid ; $result = $this ->where( $map )->order( 'rank ASC' )->findall(); if ( $result ){ foreach ( $result as $key => $value ){ $title = $value [ 'alias' ]; $list [ $title ][ 'id' ]= $value [ 'id' ]; $list [ $title ][ 'pid' ]= $value [ 'pid' ]; $list [ $title ][ 'alias' ]= $value [ 'alias' ]; $list [ $title ][ 'title' ] = $value [ 'title' ]; $list [ $title ][ 'level' ] = $value [ 'level' ]; $list [ $title ][ 'state' ] = $value [ 'state' ]; $list [ $title ][ 'rank' ] = $value [ 'rank' ]; if ( $this ->haschild( $value [ 'id' ])){ //先判断是否有第三级子类,最后的数组形如$result['child']['grandchild']; $list [ $title ][ 'grandchild' ]= $this ->_MakeSonTree( $value [ 'id' ]); } } } return $list ; } function haschild( $id ){ $result =D( 'LearningChannel' )->where( "pid=" . $id )->find(); if ( $result ){ return true; } else return false; } |
2.绑定volist标签:
1
2
3
|
$result =D( 'Learning' ) ->MakeTree(0,1); //dump($result); $this ->assign( 'list' , $result ); |
3.模板部分:
1
2
3
4
5
6
7
8
9
10
11
|
<select name= "category" id= "select" class = "text mr5" > <volist name= "list" id= "vo" > <option name= "cid" value= "{$vo.id}" <eq name= "vo.id" value= "getid" >selected</eq> >{ $vo .alias}</option> <volist name= "vo['child']" id= "child" > <option name= "cid" value= "{$child.id}" <eq name= "child.id" value= "getid" >selected</eq> >--{ $child .alias}</option> <volist name= "child['grandchild']" id= "grand" > <option name= "cid" value= "{$grand.id}" <eq name= "grand.id" value= "getid" >selected</eq> >---{ $grand .alias}</option> </volist> </volist> </volist> </select> |