@@ -12,9 +12,14 @@ private static function itemRender($start, $end, $currentPage, $url, $template)
1212 $ html = [];
1313 for ($ i = $ start ; $ i <= $ end ; $ i ++) {
1414 if ($ i == $ currentPage ) {
15- $ html [] = sprintf ($ template ['current ' ], $ i );
15+ $ html [] = self ::replace ($ template ['current ' ], [
16+ '%p% ' => $ i
17+ ]);
1618 } else {
17- $ html [] = sprintf ($ template ['item ' ], str_replace ('{page} ' , $ i , $ url ), $ i );
19+ $ html [] = self ::replace ($ template ['item ' ], [
20+ '%p% ' => $ i ,
21+ '%s% ' => self ::buildPage ($ url , $ i )
22+ ]);
1823 }
1924 }
2025 return join ('' , $ html );
@@ -31,7 +36,7 @@ public static function nextPageUrl($total, $pageSize, $currentPage, $url = '/url
3136 {
3237 $ totalPage = ceil ($ total / $ pageSize );
3338 if ($ currentPage < $ totalPage ) {
34- return str_replace ( ' {page} ' , ( $ currentPage + 1 ), $ url );
39+ return self :: buildPage ( $ url , $ currentPage + 1 );
3540 }
3641 return null ;
3742 }
@@ -46,7 +51,7 @@ public static function nextPageUrl($total, $pageSize, $currentPage, $url = '/url
4651 public static function prevPageUrl ($ total , $ pageSize , $ currentPage , $ url = '/url/for/path?page={page} ' )
4752 {
4853 if ($ currentPage > 1 ) {
49- return str_replace ( ' {page} ' , ( $ currentPage - 1 ), $ url );
54+ return self :: buildPage ( $ url , $ currentPage - 1 );
5055 }
5156 return null ;
5257 }
@@ -73,14 +78,14 @@ public static function render($total, $pageSize, $currentPage, $url = '/url/for/
7378 {
7479 if (is_null ($ template )) {
7580 $ template = [
76- 'warp ' => '<div class="pages">%s</div> ' ,
81+ 'warp ' => '<div class="pages">%s% </div> ' ,
7782 'more ' => '<span class="more">...</span> ' ,
78- 'prev ' => '<a class="page" href="%s"> ' . L ('PrevPage ' ) . '</a> ' ,
83+ 'prev ' => '<a class="page" href="%s% "> ' . L ('PrevPage ' ) . '</a> ' ,
7984 'prevDisabled ' => null ,
80- 'next ' => '<a class="page" href="%s"> ' . L ('NextPage ' ) . '</a> ' ,
85+ 'next ' => '<a class="page" href="%s% "> ' . L ('NextPage ' ) . '</a> ' ,
8186 'nextDisabled ' => null ,
82- 'current ' => '<span class="current">%d </span> ' ,
83- 'item ' => '<a class="page" href="%s">%d </a> ' ,
87+ 'current ' => '<span class="current">%p% </span> ' ,
88+ 'item ' => '<a class="page" href="%s% ">%p% </a> ' ,
8489 ];
8590 }
8691
@@ -96,13 +101,14 @@ public static function render($total, $pageSize, $currentPage, $url = '/url/for/
96101
97102 if (!empty ($ template ['first ' ])) {
98103 $ html [] = self ::replace ($ template ['first ' ], [
99- '%s ' => self ::buildPage ($ url , 1 ),
104+ '%s% ' => self ::buildPage ($ url , 1 ),
100105 ]);
101106 }
102107
103108 if ($ currentPage > 1 ) {
104109 $ html [] = self ::replace ($ template ['prev ' ], [
105- '%s ' => self ::buildPage ($ url , $ currentPage - 1 ),
110+ '%s% ' => self ::buildPage ($ url , $ currentPage - 1 ),
111+ '%p% ' => $ currentPage - 1 ,
106112 ]);
107113 } else {
108114 if (!empty ($ template ['prevDisabled ' ])) {
@@ -140,7 +146,9 @@ public static function render($total, $pageSize, $currentPage, $url = '/url/for/
140146 }
141147
142148 if ($ currentPage < $ totalPage ) {
143- $ html [] = sprintf ($ template ['next ' ], str_replace ('{page} ' , ($ currentPage + 1 ), $ url ));
149+ $ html [] = self ::replace ($ template ['next ' ], [
150+ '%s% ' => self ::buildPage ($ url , $ currentPage + 1 ),
151+ ]);
144152 } else {
145153 if (!empty ($ template ['nextDisabled ' ])) {
146154 $ html [] = $ template ['nextDisabled ' ];
@@ -149,10 +157,12 @@ public static function render($total, $pageSize, $currentPage, $url = '/url/for/
149157
150158 if (!empty ($ template ['last ' ])) {
151159 $ html [] = self ::replace ($ template ['last ' ], [
152- '%s ' => self ::buildPage ($ url , $ totalPage ),
160+ '%s% ' => self ::buildPage ($ url , $ totalPage ),
153161 ]);
154162 }
155163
156- return sprintf ($ template ['warp ' ], join ('' , $ html ));
164+ return self ::replace ($ template ['warp ' ], [
165+ '%s% ' => join ('' , $ html ),
166+ ]);
157167 }
158168}
0 commit comments