对于thinkphp分页的实现效果,一共分为两种一种是一种调用公共函数中的函数方法,而另一种是模型中书写分页的方法,下面就给需要的朋友来整理一下。
一、分页方法
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
|
/**
* TODO 基础分页的相同代码封装,使前台的代码更少
* @param $m 模型,引用传递
* @param $where 查询条件
* @param int $pagesize 每页查询条数
* @return \Think\Page
*/
function getpage(& $m , $where , $pagesize =10){
$m1 = clone $m ; //浅复制一个模型
$count = $m ->where( $where )-> count (); //连惯操作后会对join等操作进行重置
$m = $m1 ; //为保持在为定的连惯操作,浅复制一个模型
$p = new Think\Page( $count , $pagesize );
$p ->lastSuffix=false;
$p ->setConfig( 'header' , '<li class="rows">共<b>%TOTAL_ROW%</b>条记录 每页<b>%LIST_ROW%</b>条 第<b>%NOW_PAGE%</b>页/共<b>%TOTAL_PAGE%</b>页</li>' );
$p ->setConfig( 'prev' , '上一页' );
$p ->setConfig( 'next' , '下一页' );
$p ->setConfig( 'last' , '末页' );
$p ->setConfig( 'first' , '首页' );
$p ->setConfig( 'theme' , '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%' );
$p ->parameter=I( 'get.' );
$m ->limit( $p ->firstRow, $p ->listRows);
return $p ;
}
|
getpage方法可以放在TP框架的 Application/Common/Common/function.php,这个文档可以专门放置一些通用的方法,在哪里都可以调用(如:Controller文件,View文件等)。
二、调用分页方法
1
2
3
4
5
|
$m =M( 'products' );
$p =getpage( $m , $where ,10);
$list = $m ->field(true)->where( $where )->order( 'id desc' )->select();
$this ->list= $list ;
$this ->page= $p ->show();
|
再是View代码
1
2
3
|
<div class = "pagination" >
{ $page }
</div>
|
三、最后就是分页的样式了,这个有些乱,因后台框架网上下载的,样式还没来的及整理,这个样式也可以自己实现,简单的。
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
.pagination ul {
display : inline- block ;
margin-bottom : 0 ;
margin-left : 0 ;
-webkit-border-radius: 3px ;
-moz-border-radius: 3px ;
border-radius: 3px ;
-webkit-box-shadow: 0 1px 2px rgba( 0 , 0 , 0 , 0.05 );
-moz-box-shadow: 0 1px 2px rgba( 0 , 0 , 0 , 0.05 );
box-shadow: 0 1px 2px rgba( 0 , 0 , 0 , 0.05 );
}
.pagination ul li {
display : inline ;
}
.pagination ul li.rows {
line-height : 30px ;
padding-left : 5px ;
}
.pagination ul li.rows b{ color : #f00 }
.pagination ul li a, .pagination ul li span {
float : left ;
padding : 4px 12px ;
line-height : 20px ;
text-decoration : none ;
background-color : #fff ;
background : url ( '../images/bottom_bg.png' ) 0px 0px ;
border : 1px solid #d3dbde ;
/*border-left-width: 0;*/
margin-left : 2px ;
color : #08c ;
}
.pagination ul li a:hover{
color : red ;
background : #0088cc ;
}
.pagination ul li.first-child a, .pagination ul li.first-child span {
border-left-width : 1px ;
-webkit-border-bottom-left-radius: 3px ;
border-bottom-left-radius: 3px ;
-webkit-border-top-left-radius: 3px ;
border-top-left-radius: 3px ;
-moz-border-radius-bottomleft: 3px ;
-moz-border-radius-topleft: 3px ;
}
.pagination ul .disabled span, .pagination ul .disabled a, .pagination ul .disabled a:hover {
color : #999 ;
cursor : default ;
background-color : transparent ;
}
.pagination ul .active a, .pagination ul .active span {
color : #999 ;
cursor : default ;
}
.pagination ul li a:hover, .pagination ul .active a, .pagination ul .active span {
background-color : #f0c040 ;
}
.pagination ul li.last-child a, .pagination ul li.last-child span {
-webkit-border-top-right-radius: 3px ;
border-top-right-radius: 3px ;
-webkit-border-bottom-right-radius: 3px ;
border-bottom-right-radius: 3px ;
-moz-border-radius-topright: 3px ;
-moz-border-radius-bottomright: 3px ;
}
.pagination ul li.current a{ color : #f00 ; font-weight : bold ; background : #ddd }
|