文档章节

ThinkPHP自定义分页模板

---__---
 ---__---
发布于 2017/09/01 16:07
字数 380
阅读 7
收藏 0

TpPageHelper.php

<?php
namespace tool;

use think\Paginator;

class TpPageHelper extends Paginator
{

    //TODO : 中间按钮个数
    protected $bnumber = 10;

    //TODO : 首页
    protected function getfirstButton($str = '')
    {
        if ($this->currentPage() <= 1) {
            return $this->getDisabledTextWrapper($str);
        }

        $url = $this->url(1);

        return $this->getPageLinkWrapper($url, $str);
    }

    //TODO : 上一页
    protected function getPreviousButton($text = "&laquo;")
    {

        if ($this->currentPage() <= 1) {
            return $this->getDisabledTextWrapper($text);
        }

        $url = $this->url(
            $this->currentPage() - 1
        );

        return $this->getPageLinkWrapper($url, $text);
    }

    //TODO : 页码
    protected function getLinks()
    {
        if ($this->total > $this->listRows) {
            if ($this->lastPage < $this->bnumber) {
                return $this->getUrlLinks($this->getUrlRange(1, $this->lastPage));
            } else {
                $min = 1;
                if ($this->currentPage > $this->bnumber / 2) $min = $this->currentPage - floor($this->bnumber / 2);
                if ($this->lastPage - $this->currentPage < $this->bnumber / 2) $min = $this->lastPage - $this->bnumber + 1;
                return $this->getUrlLinks($this->getUrlRange($min, $min + $this->bnumber - 1));
            }
        }
    }

    //TODO : 下一页
    protected function getNextButton($text = '&raquo;')
    {
        if (!$this->hasMore) {
            return $this->getDisabledTextWrapper($text);
        }

        $url = $this->url($this->currentPage() + 1);

        return $this->getPageLinkWrapper($url, $text);
    }

    //TODO : 末页
    protected function getlastButton($text = '')
    {
        if (!$this->hasMore) {
            return $this->getDisabledTextWrapper($text);
        }

        $url = $this->url($this->lastPage());

        return $this->getPageLinkWrapper($url, $text);
    }

    //TODO : 渲染页
    public function render()
    {
        //数据是否足够分页
        if ($this->hasPages()) {
            return sprintf(
                '<ul class="btn-item fr">%s %s %s %s %s</ul>',
                $this->getfirstButton('首页'),
                $this->getPreviousButton('上一页'),
                $this->getLinks(),
                $this->getNextButton('下一页'),
                $this->getlastButton('末页')
            );
        }
    }

    //TODO : 生成禁用按钮
    protected function getDisabledTextWrapper($text)
    {
        return '<li class="disabled"><span>' . $text . '</span></li>';
    }

    //TODO : 生成普通按钮
    protected function getPageLinkWrapper($url, $page)
    {
        if ($page == $this->currentPage()) {
            return $this->getActivePageWrapper($page);
        }

        return $this->getAvailablePageWrapper($url, $page);
    }

    //TODO : 生成当前页按钮
    protected function getActivePageWrapper($text)
    {
        return '<li class="active"><span>' . $text . '</span></li>';
    }

    //TODO : 可点击按钮
    protected function getAvailablePageWrapper($url, $page)
    {
        return '<li><a href="' . htmlentities($url) . '">' . $page . '</a></li>';
    }

    //TODO : 批量生成页码按钮
    protected function getUrlLinks(array $urls)
    {
        $html = '';

        foreach ($urls as $page => $url) {
            $html .= $this->getPageLinkWrapper($url, $page);
        }

        return $html;
    }

}
  • 将 TpPageHelper.php 放在该目录下

  • 修改默认模板

详细链接 : https://www.kancloud.cn/animal/riji/317872

© 著作权归作者所有

共有 人打赏支持
---__---
粉丝 2
博文 7
码字总数 3336
作品 0
深圳
私信 提问
加载中

评论(1)

红薯
红薯
建议使用 https://gitee.com/gists 来分享代码片段
ThinkPHP 查询数据 select(findAll) 方法

ThinkPHP 查询数据 ThinkPHP 查询数据主要提供以下几类查询: select:普通查询,同 findAll() 方法 find:取得符合查询条件的一条记录 getBy动态查询:根据某个字段取得符合查询条件的一条记...

WangEven
2012/05/10
0
0
Thinkphp下实现对数组的分页

今天终于把两周之前的任务完成了,趁着余热记下来分享给大家。 说一下任务,在thinkphp的框架下实现分页。公司的网站基于Thinkphp框架,一直久闻thinkphp的大名,终于有机会实战了。 thinkp...

zhang_go
2014/04/09
0
1
网站安全检测 网站漏洞修复 对thinkphp通杀漏洞利用与修复建议

thinkphp在国内来说,很多站长以及平台都在使用这套开源的系统来建站,为什么会这么深受大家的喜欢,第一开源,便捷,高效,生成静态化html,第二框架性的易于开发php架构,很多第三方的插件...

网站安全
2018/09/05
0
0
GoPHP —— 轻量级 PHP 框架

GoPHP是基于ThinkPHP和Smarty深度优化的轻量级PHP框架,在继承ThinkPHP快速、简单的基础上重构了框架的底层架构,精简了无用的组件,抛弃了ThinkPHP内置的晦涩难懂的模板引擎,改用流行的Sma...

达尔文
2016/11/09
15
0
网站安全检测 漏洞检测 对thinkphp通杀漏洞利用与修复建议

thinkphp在国内来说,很多站长以及平台都在使用这套开源的系统来建站,为什么会这么深受大家的喜欢,第一开源,便捷,高效,生成静态化html,第二框架性的易于开发php架构,很多第三方的插件...

网站安全
2018/09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【转】初次提交项目到github

第一步:安装Git 第二步:在自己的工程目录下右键鼠标 选择 Git Bash Here 执行命令 git init 来创建一个本地代码仓库 执行命令 git add . 来把所有文件添加到仓库 执行命令 git commit -m ...

覃光林
17分钟前
2
0
Zend Studio使用教程:使用PHPUnit检测代码(五)

本教程演示如何在代码上创建和运行PHPUnit Test。您将学习如何创建和运行包含许多测试用例的单个单元测试用例和测试套件。 单元测试是一个测试代码的过程,以确保源代码的各个单元正常工作,...

电池盒
17分钟前
2
0
前端 联想搜索下拉框

data.result 为联想搜索出来的数组 innerhtml += "<ul style='list-style:none;font-size:13px;margin: 0px;padding: 5px;'>";for (var j = 0; j < data.result.length; j++) { var r......

yan_liu
17分钟前
2
0
预计2019年发布的Vue3.0到底有什么不一样的地方?

摘要: Vue 3.0预览。 原文:预计今年发布的Vue3.0到底有什么不一样的地方? 作者:小肆 Fundebug经授权转载,版权归原作者所有。 还有几个月距离 vue2 的首次发布就满 3 年了,而 vue 的作者...

Fundebug
18分钟前
1
0
跟我学Spring Cloud(Finchley版)-11-Feign常见问题总结

本文总结Feign常见问题及解决方案。 一、FeignClient接口如使用@PathVariable ,必须指定value属性 代码示例: @FeignClient("microservice-provider-user")public interface UserFeignCli......

周立_ITMuch
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部