基于对ThinkPHP的了解程度不够,在实际运用中发现使用ThinkPHP的分页,即
1 |
{$list->render()} |
默认出来的样式是错误的,想了下原因,可能是没有引用TP默认CSS的原因吧,其实具体原因我并没有去找,我只想用上LayUI。
网上找了下资料,自己整理如下:
在extend下建立目录,目录名随意,根据命名空间作对应修改即可,这里我以page为例,并在目录下建立Page.php
1 |
extend/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 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 |
<?php namespace page; use think\Paginator; class Page extends Paginator { protected $uri; /** * 上一页按钮 * @param string $text * @return string */ protected function getPreviousButton($text = "上一页") { if ($this->currentPage() <= 1) { return $this->getDisabledTextWrapper($text); } $url = $this->url( $this->currentPage() - 1 ); return $this->getPageLinkWrapper($url, $text); } /** * 下一页按钮 * @param string $text * @return string */ protected function getNextButton($text = '下一页') { if (!$this->hasMore) { return $this->getDisabledTextWrapper($text); } $url = $this->url($this->currentPage() + 1); return $this->getPageLinkWrapper($url, $text); } /** * 页码按钮 * @return string */ protected function getLinks() { if ($this->simple) return ''; $block = [ 'first' => null, 'slider' => null, 'last' => null ]; $side = 3; $window = $side * 2; if ($this->lastPage < $window + 6) { $block['first'] = $this->getUrlRange(1, $this->lastPage); } elseif ($this->currentPage <= $window) { $block['first'] = $this->getUrlRange(1, $window + 2); $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); } elseif ($this->currentPage > ($this->lastPage - $window)) { $block['first'] = $this->getUrlRange(1, 2); $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage); } else { $block['first'] = $this->getUrlRange(1, 2); $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side); $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage); } $html = ''; if (is_array($block['first'])) { $html .= $this->getUrlLinks($block['first']); } if (is_array($block['slider'])) { $html .= $this->getDots(); $html .= $this->getUrlLinks($block['slider']); } if (is_array($block['last'])) { $html .= $this->getDots(); $html .= $this->getUrlLinks($block['last']); } return $html; } /** * 渲染分页html * @return mixed */ public function render() { if ($this->hasPages()) { if ($this->simple) { return sprintf( '<ul class="pager">%s %s</ul>', $this->getPreviousButton(), $this->getNextButton() ); } else { return sprintf( '<div class="layui-laypage">%s %s %s %s %s</div>', $this->getTotal($this->total), $this->getPreviousButton(), $this->getLinks(), $this->getNextButton(), $this->goPage() ); } } } /** * 生成一个可点击的按钮 * * @param string $url * @param int $page * @return string */ protected function getAvailablePageWrapper($url, $page) { return '<a href="'%20.%20htmlentities($url)%20.%20'">' . $page . '</a>'; } /** * 生成一个禁用的按钮 * * @param string $text * @return string */ protected function getDisabledTextWrapper($text) { return '<a class="layui-laypage-prev layui-disabled" >' . $text . '</a>'; } /** * 生成一个激活的按钮 * * @param string $text * @return string */ protected function getActivePageWrapper($text) { return '<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>' . $text . '</em></span>'; } /** * 生成省略号按钮 * * @return string */ protected function getDots() { return $this->getDisabledTextWrapper('...'); } /** * 批量生成页码按钮. * * @param array $urls * @return string */ protected function getUrlLinks(array $urls) { $html = ''; foreach ($urls as $page => $url) { $html .= $this->getPageLinkWrapper($url, $page); } return $html; } /** * 生成普通页码按钮 * * @param string $url * @param int $page * @return string */ protected function getPageLinkWrapper($url, $page) { if ($page == $this->currentPage()) { return $this->getActivePageWrapper($page); } return $this->getAvailablePageWrapper($url, $page); } /** * 生成总条数 * @param $num * @return string */ protected function getTotal($num) { return '<span class="layui-laypage-count">共'.$num.'条</span>'; } /** * 跳转 * @return string */ protected function goPage() { $this->getUri(); return '<span class="layui-laypage-skip">到第<input type="text" min="1" value="1" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->lastPage.')?'.$this->lastPage.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}" class="layui-input" ><button type="button" class="layui-laypage-btn" onclick="javascript:var page =(this.previousSibling.value > '.$this->lastPage.') ? '.$this->lastPage.': this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'">确定</button></span>'; } /** * 获取url */ private function getUri(){ $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?"); $parse=parse_url($url); if(isset($parse["query"])){ parse_str($parse['query'],$params); unset($params["page"]); $url=$parse['path'] . '?' . http_build_query($params) .'&'; }else{ $url=$parse['path'] . '?'; } $this->uri = $url; } } |
同时对config.php进行修改,找到下方内容进行对应修改即可
1 2 3 4 5 6 7 |
//分页配置 'paginate' => [ /* 'type' => 'bootstrap', */ 'type' => 'page\Page', 'var_page' => 'page', 'list_rows' => 15, ], |
原创文章,作者:蓝洛水深,如若转载,请注明出处:https://blog.lanluo.cn/6028