ThinkPHP采用<volist>实现三级循环代码实例

本文以实例描述了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>

猜你喜欢

转载自blog.csdn.net/wangmj518/article/details/80204008