ThinkPHP 怎么结合Bootstrap进行分页?

发布于 2022-09-02 20:46:39 字数 2051 浏览 13 评论 0

上面是我从数据库取出来后,直接分页显示。

下面是一段Bootstrap的硬编码分页的代码,怎么让下面的代码真正起到分页的作用呢?

clipboard.png

最终的目标是能实现下面这样的效果:

clipboard.png

View视图中的代码:

<!--pagination start-->
<div class="col-md-12">
    <div class="pages">
        {$page}
    </div>
</div>

<ul class="pagination pagination-sm">
    <li><a href="#">&laquo;第一页</a></li>
    <li><a href="#">11</a></li>
    <li><a href="#">12</a></li>
    <li class="active"><a href="#">13</a></li>
    <li><a href="#">14</a></li>
    <li><a href="#">15</a></li>
    <li class="disabled"><a href="#">最后一页&raquo;</a></li>
</ul>
<!--pagination end-->

Controller控制器中的代码:

//total records and pagesize
$p = getpage($count, 6);
.
.
.
$this -> assign('page', $p -> show());                    
$this -> display();

Application/Common/Common/function.php中的getpage代码:

/**
 * TODO 基础分页的相同代码封装,使前台的代码更少
 * @param $count 要分页的总记录数
 * @param int $pagesize 每页查询条数
 * @return \Think\Page
 */
function getpage($count, $pagesize = 10) {
    $p = new Think\Page($count, $pagesize);
    $p->setConfig('header', '<li class="rows">共<b>%TOTAL_ROW%</b>条记录&nbsp;第<b>%NOW_PAGE%</b>页/共<b>%TOTAL_PAGE%</b>页</li>');
    $p->setConfig('prev', '上一页');
    $p->setConfig('next', '下一页');
    $p->setConfig('last', '末页');
    $p->setConfig('first', '首页');
    $p->setConfig('theme', '%FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%%HEADER%');
    $p->lastSuffix = false;//最后一页不显示为总页数
    return $p;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

囚你心 2022-09-09 20:46:39

正好有个修改过的,可以利用bootstrap的样式

public function show() {
        if(0 == $this->totalRows) return '';

        /* 生成URL */
        $this->parameter[$this->p] = '[PAGE]';
        $this->url = U(ACTION_NAME, $this->parameter);
        /* 计算分页信息 */
        $this->totalPages = ceil($this->totalRows / $this->listRows); //总页数
        if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) {
            $this->nowPage = $this->totalPages;
        }

        /* 计算分页零时变量 */
        $now_cool_page      = $this->rollPage/2;
        $now_cool_page_ceil = ceil($now_cool_page);
        $this->lastSuffix && $this->config['last'] = $this->totalPages;

        //上一页
        $up_row  = $this->nowPage - 1;
        $up_page = $up_row > 0 ? '<li><a class="prev" href="' . $this->url($up_row) . '">' . $this->config['prev'] . '</a></li>' : '';

        //下一页
        $down_row  = $this->nowPage + 1;
        $down_page = ($down_row <= $this->totalPages) ? '<li><a class="next" href="' . $this->url($down_row) . '">' . $this->config['next'] . '</a></li>' : '';

        //第一页
        $the_first = '';
        if($this->totalPages > $this->rollPage && ($this->nowPage - $now_cool_page) >= 1){
            $the_first = '<li><a class="first" href="' . $this->url(1) . '">' . $this->config['first'] . '</a></li>';
        }

        //最后一页
        $the_end = '';
        if($this->totalPages > $this->rollPage && ($this->nowPage + $now_cool_page) < $this->totalPages){
            $the_end = '<li><a class="end" href="' . $this->url($this->totalPages) . '">' . $this->config['last'] . '</a></li>';
        }

        //数字连接
        $link_page = "";
        for($i = 1; $i <= $this->rollPage; $i++){
            if(($this->nowPage - $now_cool_page) <= 0 ){
                $page = $i;
            }elseif(($this->nowPage + $now_cool_page - 1) >= $this->totalPages){
                $page = $this->totalPages - $this->rollPage + $i;
            }else{
                $page = $this->nowPage - $now_cool_page_ceil + $i;
            }
            if($page > 0 && $page != $this->nowPage){

                if($page <= $this->totalPages){
                    $link_page .= '<li><a class="num" href="' . $this->url($page) . '">' . $page . '</a></li>';
                }else{
                    break;
                }
            }else{
                if($page > 0 && $this->totalPages != 1){
                    $link_page .= '<li class="active"><a href="#">' . $page . '</a></li>';
                }
            }
        }

        //替换分页内容
        $page_str = str_replace(
            array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),
            array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),
            $this->config['theme']);
        return "<ul class='pagination'>{$page_str}</ul>";
    }
梦年海沫深 2022-09-09 20:46:39

感谢邀请,不过我没用TP哈。
从你给出的信息中,我觉得你可以研究一下Page.class.php的源码,然后自己定义一个Application/Common/Common/function.php中的getpage方法,比如Controller->getPage()来代替它。
因为从getpage的内容来看,只要你使用适合的设置是可以修改分页输出的,通常class属性也属于配置的一部分。试试看吧。

绅士风度i 2022-09-09 20:46:39

谢邀

看了半天 你是想改变分页的样式么

貌似你用的Page.class.php这个类不能自定义样式

只能在修改才行

或者新建一个类继承Page.class.php,在做修改被

笨笨の傻瓜 2022-09-09 20:46:39

ThinkPHP /Library /Think / Page.class.php
还是直接修改源码吧。

寂寞美少年 2022-09-09 20:46:39

我想问一下这个功能你实现了吗?能否告知一下怎样实现的,谢谢了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文