本文實例講述了YII2框架中分頁組件的使用方法。分享給大家供大家參考,具體如下:
當數據過多,無法一頁顯示時,我們經常會用到分頁組件,YII2中已經幫我們封裝好了分頁組件。
首先我們創建操作數據表的AR模型:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php namespace app\models; use yii\db\ActiveRecord; class MyUser extends ActiveRecord { public static function tableName() { return '{{%user}}' ; } } |
然后創建分頁的控制器:
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
|
<?php namespace app\controllers; use YII; use app\models\MyUser; use yii\data\Pagination; use yii\web\Controller; class IndexController extends Controller { public function actionIndex() { $name = YII:: $app ->request->get( 'name' , '' ); $where = '1=1 ' ; $param = []; //如果查詢條件很多,可以按這種方式,拼where條件 if (! empty ( $name )) { $where .= "AND name=:name" ; $param = array_merge ( $param , [ ':name' => $name ]); } //設置分頁大小,為了演示,我寫成了2 $pageSize = 2; $user = MyUser::find()->where( $where , $param ); //創建分頁組件 $page = new Pagination([ //總的記錄條數 'totalCount' => $user -> count (), //分頁大小 'pageSize' => $pageSize , //設置地址欄當前頁數參數名 'pageParam' => 'p' , //設置地址欄分頁大小參數名 'pageSizeParam' => 'pageSize' , ]); //獲取數據 $data = $user ->orderBy( 'id DESC' ) ->offset( $page ->offset) ->limit( $page ->limit) ->asArray() ->all(); return $this ->renderPartial( 'index' , [ 'data' => $data , 'page' => $page , ]); } } |
最后就是顯示數據分頁:
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
|
<!doctype html> <html lang= "zh-CN" > <head> <meta charset= "UTF-8" > <title>分頁顯示</title> <style> .page li { display: inline-block; border: 1px solid #ccc; border-radius: 3px; padding: 2px 3px; } .page li.active a { font-weight: bold; } .page li a { text-decoration: none; } .page li a, .page li span { color: #666; } </style> </head> <body> <ul> <?php foreach ( $data as $item ): ?> <li><?php echo $item [ 'id' ]; ?> <?php echo $item [ 'name' ]; ?></li> <?php endforeach ; ?> </ul> <?php echo \yii\widgets\LinkPager::widget([ 'pagination' => $page , 'firstPageLabel' => '首頁' , 'lastPageLabel' => '尾頁' , 'nextPageLabel' => '下一頁' , 'prevPageLabel' => '上一頁' , //設置class樣式 'options' => [ 'class' => 'page' ], ]) ?> </body> </html> |
最后效果如下:
希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。
原文鏈接:https://www.cnblogs.com/jkko123/p/8668419.html