本文实例讲述了yii分页组件用法。分享给大家供大家参考,具体如下:
该案例使用时,分页类在yii框架中以组件的形式存在于components中。
action代码如下:
1
2
3
4
5
6
7
8
9
10
11
|
public function actionIndex(){ $user =User::model(); //分页的使用 $count = $user -> count (); //获取总页数 $pagesize =3; //每一页显示的记录条数 $page = new Page( $count , $pagesize ); $sql = "select * from {{user}} $page->limit" ; $info = $user ->findAllBySql( $sql ); $show_page = $page ->fpage(); $this ->renderPartial( "index" , array ( "info" => $info , 'show_page' => $show_page )); } |
在view页面,遍历info即可获取信息,输出show_page即可显示分页列表等信息。
现附上page.php代码如下:
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
<?php /** * 分页类,以组件形式存在于componnets文件中 */ class Page { private $total ; //数据表中总记录数 private $listRows ; //每页显示行数 private $limit ; private $uri ; private $pageNum ; //页数 private $config = array ( 'header' => "个记录" , "prev" => "上一页" , "next" => "下一页" , "first" => "首 页" , "last" => "尾 页" ); private $listNum =8; /* * $total * $listRows */ public function __construct( $total , $listRows =10, $pa = "" ){ $this ->total= $total ; $this ->listRows= $listRows ; $this ->uri= $this ->getUri( $pa ); $this ->page=! empty ( $_GET [ "page" ]) ? $_GET [ "page" ] : 1; $this ->pageNum= ceil ( $this ->total/ $this ->listRows); $this ->limit= $this ->setLimit(); } private function setLimit(){ return "Limit " .( $this ->page-1)* $this ->listRows. ", {$this->listRows}" ; } private function getUri( $pa ){ $url = $_SERVER [ "REQUEST_URI" ].( strpos ( $_SERVER [ "REQUEST_URI" ], '?' )? '' : "?" ). $pa ; $parse = parse_url ( $url ); if (isset( $parse [ "query" ])){ parse_str ( $parse [ 'query' ], $params ); unset( $params [ "page" ]); $url = $parse [ 'path' ]. '?' .http_build_query( $params ); } return $url ; } function __get( $args ){ if ( $args == "limit" ) return $this ->limit; else return null; } private function start(){ if ( $this ->total==0) return 0; else return ( $this ->page-1)* $this ->listRows+1; } private function end (){ return min( $this ->page* $this ->listRows, $this ->total); } private function first(){ $html = '' ; if ( $this ->page==1) $html .= '' ; else $html .= " <a href='{$this->uri}&page=1'>{$this->config[" first "]}</a> " ; return $html ; } private function prev(){ $html = '' ; if ( $this ->page==1) $html .= '' ; else $html .= " <a href='{$this->uri}&page=" .( $this ->page-1). "'>{$this->config[" prev "]}</a> " ; return $html ; } private function pageList(){ $linkPage = "" ; $inum = floor ( $this ->listNum/2); for ( $i = $inum ; $i >=1; $i --){ $page = $this ->page- $i ; if ( $page <1) continue ; $linkPage .= " <a href='{$this->uri}&page={$page}'>{$page}</a> " ; } $linkPage .= " {$this->page} " ; for ( $i =1; $i <= $inum ; $i ++){ $page = $this ->page+ $i ; if ( $page <= $this ->pageNum) $linkPage .= " <a href='{$this->uri}&page={$page}'>{$page}</a> " ; else break ; } return $linkPage ; } private function next(){ $html = '' ; if ( $this ->page== $this ->pageNum) $html .= '' ; else $html .= " <a href='{$this->uri}&page=" .( $this ->page+1). "'>{$this->config[" next "]}</a> " ; return $html ; } private function last(){ $html = '' ; if ( $this ->page== $this ->pageNum) $html .= '' ; else $html .= " <a href='{$this->uri}&page=" .( $this ->pageNum). "'>{$this->config[" last "]}</a> " ; return $html ; } private function goPage(){ return ' <input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>' . $this ->pageNum. ')?' . $this ->pageNum. ':this.value;location=\'' . $this ->uri. '&page=\'+page+\'\'}" value="' . $this ->page. '" style="width:25px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>' . $this ->pageNum. ')?' . $this ->pageNum. ':this.previousSibling.value;location=\'' . $this ->uri. '&page=\'+page+\'\'"> ' ; } function fpage( $display = array (0,1,2,3,4,5,6,7,8)){ $html [0]= " 共有<b>{$this->total}</b>{$this->config[" header "]} " ; $html [1]= " 每页显示<b>" .( $this -> end ()- $this ->start()+1). "</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 " ; $html [2]= " <b>{$this->page}/{$this->pageNum}</b>页 " ; $html [3]= $this ->first(); $html [4]= $this ->prev(); $html [5]= $this ->pageList(); $html [6]= $this ->next(); $html [7]= $this ->last(); $html [8]= $this ->goPage(); $fpage = '' ; foreach ( $display as $index ){ $fpage .= $html [ $index ]; } return $fpage ; } } |
希望本文所述对大家基于yii框架的PHP程序设计有所帮助。