虽然说TP5 有自带的分页的方法 也是好用 但是对于追求原页面样式的的人来说 这是不需要的

今天就来教大家 如何自己定制tp5 分页样式

1.在tp5框架目录下找到extend文件夹,并创建page文件夹,在page文件夹下中创建Page.php类文件:(下图为tp5框架目录)

2.下面是咱们刚才建立page.php 的内容

<?php
// +----------------------------------------------------------------------
// | Description: 自定义分页
// +----------------------------------------------------------------------
// | Author: phpAndy <383916522@qq.com>
// +----------------------------------------------------------------------namespace page;use think\Paginator;class Page extends Paginator
{//首页protected function home(){if ($this->currentPage() > 1) {return "<a href='" . $this->url(1) . "' title='首页'>首页</a>";} else {return "<p>首页</p>";}}//上一页protected function prev(){if ($this->currentPage() > 1) {return "<a href='" . $this->url($this->currentPage - 1) . "' title='上一页'>上一页</a>";} else {return "<p>上一页</p>";}}//下一页protected function next(){if ($this->hasMore) {return "<a href='" . $this->url($this->currentPage + 1) . "' title='下一页'>下一页</a>";} else {return "<p>下一页</p>";}}//尾页protected function last(){if ($this->hasMore) {return "<a href='" . $this->url($this->lastPage) . "' title='尾页'>尾页</a>";} else {return "<p>尾页</p>";}}//统计信息protected function info(){return "<p class='pageRemark'>共<b>" . $this->lastPage ."</b>页<b>" . $this->total . "</b>条数据</p>";}//项目public function xiangmu(){return "<div class='tablenav-pages'><span class='displaying-num'>" . $this->total . "项目</span>";}//首页public function shouye(){if ($this->currentPage() > 1) {return "<a class='next-page' href='" . $this->url(1) . "'><span class='screen-reader-text'>首页</span><span aria-hidden='true'><<</span></a>";} else {return "<span class='pagination-links'><span class='tablenav-pages-navspan' aria-hidden='true'><<</span>";}}//上一页public function shangyiye(){if($this->currentPage() > 1) {return "<a class='next-page' href='" . $this->url($this->currentPage - 1) . "'><span class='screen-reader-text'>首页</span><span aria-hidden='true'><</span></a>";}else{return "<span class='tablenav-pages-navspan' aria-hidden='true'><</span>";}}//当前页public function dangqianye(){return "<span class='screen-reader-text'>当前页</span><span id='table-paging' class='paging-input'><span class='tablenav-paging-text'>第 $this->currentPage 页,共<span class='total-pages'>  $this->lastPage </span>页</span></span>";}//下一页public function xiayiye(){if ($this->hasMore) {return " <a class='next-page' href='".$this->url($this->currentPage + 1)."'><span class='screen-reader-text'>下一页</span><span aria-hidden='true'>></span></a>";} else {return "<span class='tablenav-pages-navspan' aria-hidden='true'>></span>";}}//尾页public function weiye(){if ($this->hasMore) {return " <a class='next-page' href='". $this->url($this->lastPage) ."'><span class='screen-reader-text'>尾页</span><span aria-hidden='true'>>></span></a>";return "<a href='" . $this->url($this->lastPage) . "' title='尾页'>尾页</a>";} else {return "<span class='tablenav-pages-navspan' aria-hidden='true'>>></span></span>";}}/*** 页码按钮* @return string*/protected function getLinks(){$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('%s<div class="pagination">%s %s %s</div>',$this->css(),$this->prev(),$this->getLinks(),$this->next());} else {return sprintf('<!--%s--><div class="tablenav-pages">%s %s %s %s %s %s</div>',//css 用于加载下面样式//如果样式是是前端有写好的css样式加载 则不需要加载此处css//$this->css(),$this->xiangmu(),$this->shouye(),$this->shangyiye(),$this->dangqianye(),$this->xiayiye(),$this->weiye()//$this->home(),//$this->prev(),//$this->getLinks(),//$this->next(),//$this->last(),//$this->info());}}}/*** 生成一个可点击的按钮** @param  string $url* @param  int $page* @return string*/protected function getAvailablePageWrapper($url, $page){return '<a href="' . htmlentities($url) . '" title="第"' . $page . '"页" >' . $page . '</a>';}/*** 生成一个禁用的按钮** @param  string $text* @return string*/protected function getDisabledTextWrapper($text){return '<p class="pageEllipsis">' . $text . '</p>';}/*** 生成一个激活的按钮** @param  string $text* @return string*/protected function getActivePageWrapper($text){return '<a href="" class="cur">' . $text . '</a>';}/*** 生成省略号按钮** @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);}/*** 分页样式*/protected function css(){return '  <style type="text/css">.pagination p{margin:0;cursor:pointer}.pagination{height:40px;padding:20px 0px;}.pagination a{display:block;float:left;margin-right:10px;padding:2px 12px;height:24px;border:1px #cccccc solid;background:#fff;text-decoration:none;color:#808080;font-size:12px;line-height:24px;}.pagination a:hover{color:#077ee3;background: white;border:1px #077ee3 solid;}.pagination a.cur{border:none;background:#077ee3;color:#fff;}.pagination p{float:left;padding:2px 12px;font-size:12px;height:24px;line-height:24px;color:#bbb;border:1px #ccc solid;background:#fcfcfc;margin-right:8px;}.pagination p.pageRemark{border-style:none;background:none;margin-right:0px;padding:4px 0px;color:#666;}.pagination p.pageRemark b{color:black;}.pagination p.pageEllipsis{border-style:none;background:none;padding:4px 0px;color:#808080;}.dates li {font-size: 14px;margin:20px 0}.dates li span{float:right}</style>';}
}

3.然后去修改你的config配置:

    //分页配置//这是tp5自带的// 'paginate'               => [//     'type'      => 'bootstrap',//     'var_page'  => 'page',//    'list_rows' => 15,// ],//自定义分页配置'paginate'               => [//page/Page 指放在extend page文件夹下 的Page类 进行加载'type'      => 'page\Page',//分页类'var_page'  => 'page','list_rows' => 15,],

4.控制器写法

 public function all_user(){$user=new UserModel();//分页1$paramas=$this->request->param();$view=$user->paginate(2);//分页2 用来保持分页状态$view->appends($paramas);$this->assign('view',$view);//输出page$this->assign('page',$view->render());return view();}

5.前台页面输出

           <option value="administrator">管理员</option></select><input type="submit" name="changeit" id="changeit" class="button" value="更改"></div>//输出page{$page}

6.前台页面效果

按照以上方法写 就可以避免tp5自带的分页与网站自带的分页样式不同的问题

tp5 自定义分页详解相关推荐

  1. ASP.NET技巧:GridView控件自定义分页详解第一页

    ASP.NET技巧:GridView控件自定义分页详解 日期:2007年9月11日 作者: 查看:[大字体 中字体 小字体] <script src="../gg/info468.js ...

  2. pandas dataframe中的列进行重新排序、倒排、正排、自定义排序详解及实践

    pandas dataframe中的列进行重新排序,pandas dataframe列重排.倒排.正排.自定义排序详解及实践 实施数据构建: import pandas as pd import nu ...

  3. Android Gradle 自定义Task详解二:进阶

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78523958 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  4. Android Gradle 自定义Task 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  5. python数据处理常用函数_pytorch中的自定义数据处理详解

    pytorch在数据中采用Dataset的数据保存方式,需要继承data.Dataset类,如果需要自己处理数据的话,需要实现两个基本方法. :.getitem:返回一条数据或者一个样本,obj[in ...

  6. html 自定义打印模板,HTML+CSS入门 自定义模板详解

    本篇教程介绍了HTML+CSS入门 自定义模板详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门.< 首先总的stylecss和大模板都是当初angel_Kitty学姐的,嗯, ...

  7. python构造自定义数据包_pytorch中的自定义数据处理详解

    pytorch在数据中采用Dataset的数据保存方式,需要继承data.Dataset类,如果需要自己处理数据的话,需要实现两个基本方法. :.getitem:返回一条数据或者一个样本,obj[in ...

  8. C语言自定义类型详解

    C语言自定义类型详解 一.结构体 1.结构的声明 2.特殊的声明 3.结构的自引用 4.结构体变量的定义和初始化 5.结构体内存对齐 6.修改默认对齐数 7.结构体传参 二.位段 1.什么是位段 2. ...

  9. android 自定义xmlns,Android xmlns 的作用及其自定义实例详解

    Android xmlns 的作用及其自定义实例详解 xmlns:Android="http://schemas.android.com/apk/res/android的作用是: 这个是xm ...

最新文章

  1. es6+的javascript拓展内容
  2. Dynamics CRM Publisher
  3. js createElement appendChild createTextNode用法
  4. CCTYPE函数系列
  5. 小工匠聊架构-布隆过滤器在亿级流量的电商系统中的应用
  6. RedisManager使用手册(二) -- 配置文件详解
  7. 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)
  8. 北上广深的程序员,房子在向你们招手了!
  9. [转]如何使用BackTrack破解WIFI无线网络的WEP密钥
  10. 上帝手中的骰子——无所不能的贝叶斯(上篇)
  11. 做一个管理者的学习之路--002
  12. DocsBuilderGUI 工具使用介绍
  13. windows bat打印机打印测试页
  14. 【微信hook】微信机器人之PC微信hook
  15. 2020软考网络工程师--基础知识视频教程-任铄(小任老师)-专题视频课程
  16. linux匿名邮件,Linux下用mutt给QQ邮箱发匿名邮件
  17. Vue视频教程 向军Vue基础教程 共86课
  18. 华为首部鸿蒙手机,液态镜头首次亮相亚美AM8探秘华为首部鸿蒙手机P50
  19. echart改变折线图和折线点的颜色以及折线点的大小
  20. 双S曲线轨迹(详细推导)

热门文章

  1. 5 款 Gmail 的开源替代品
  2. Unity之 制作卷轴展开显示画面效果
  3. wincc提示计算机丢失ccctrl,WinCC变量记录和组态报警-20210408064829.docx-原创力文档...
  4. 测试适合什么颜色衣服的软件,超准的颜色测试!一语道破你最适合穿什么颜色的衣服!...
  5. 打砖块小游戏php程序,c++ 打砖块 小游戏示例
  6. matlab绘制子图怎么,MATLAB画图之多子图画法(subplot和自己确定大小位置两种方法)...
  7. Android移动开发基础——实训项目:个人财务软件
  8. python绘制回形纹_用python画百变风味月饼
  9. 车市下滑 领克汽车为什么逆势上扬?
  10. 【Midjourney】Midjourney 连续性人物创作 ③ ( Panels 命令 | character sheet 命令 | expression sheet 命令 )