Thinkphp5 自定義分頁樣式顯示頁碼和數量

1、修改完成後以下圖顯示php

2、修改Bootstrap代碼:html

一、爲了避免改動Bootstrap.php源代碼,拷貝thinkphp目錄下的Bootstrap.php從新命名爲BootstrapDetailed.php

二、BootstrapDetailed代碼thinkphp

<?php app

namespace think\paginator\driver;ide

use think\Paginator;this

class BootstrapDetailed extends Paginator {url

/**
 * 上一頁按鈕
 * [@param](https://my.oschina.net/u/2303379) string $text
 * [@return](https://my.oschina.net/u/556800) string
 */
protected function getPreviousButton($text = "上一頁")
{

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

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

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



//總數標籤
protected  function totalshow()
{

    $totalhtml="<li class=\"disabled\"><span>共".$this->total."條記錄&nbsp&nbsp第".$this->currentPage()."頁/共".$this->lastPage()."頁</span></li>";
    return $totalhtml;

}

//尾頁標籤

protected  function showlastpage($text = '尾頁')
{

    if($this->currentPage()==$this->lastPage())
    {
        return $this->getDisabledTextWrapper($text);

    }

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

//首頁標籤

protected  function showfirstpage($text = '首頁')
{

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

    }

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

//後五頁 protected function afivepage($text = '後五頁') {spa

if($this->lastPage()<$this->currentPage()+5)
    {
        return $this->getDisabledTextWrapper($text);

    }
    $url = $this->url($this->currentPage()+5);


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

//前五頁
protected  function bfivepage($text = '前五頁')
{


    if($this->currentPage()<5)
    {
        return $this->getDisabledTextWrapper($text);

    }
    $url = $this->url($this->currentPage()-5);


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


/**
 * 下一頁按鈕
 * [@param](https://my.oschina.net/u/2303379) string $text
 * [@return](https://my.oschina.net/u/556800) string
 */
protected function getNextButton($text = '下一頁')
{
    if (!$this->hasMore) {
        return $this->getDisabledTextWrapper($text);
    }

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

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

//跳轉到哪頁 protected function gopage() {.net

return $gotohtml="<li><form action='' method='get' ><span><input type='text' name='page'> <input type='submit' value='肯定'> </span></form></li>";
   // return $totalhtml;;

}

/**
 * 頁碼按鈕
 * @return string
 */
protected function getLinks()
{
    if ($this->simple)
        return '';

    $block = [
        'first'  => null,
        'slider' => null,
        'last'   => null
    ];

    $side   = 2;
    $window = $side * 2;

    if ($this->lastPage < $window +1) {
        $block['slider'] = $this->getUrlRange(1, $this->lastPage);

    } elseif ($this->currentPage <= $window-1) {

        $block['slider'] = $this->getUrlRange(1, $window + 1);
    } elseif ($this->currentPage > ($this->lastPage - $window+1)) {
        $block['slider']  = $this->getUrlRange($this->lastPage - ($window), $this->lastPage);

    } else {

        $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
    }

    $html = '';

    if (is_array($block['first'])) {
        $html .= $this->getUrlLinks($block['first']);
    }

    if (is_array($block['slider'])) {

        $html .= $this->getUrlLinks($block['slider']);
    }

    if (is_array($block['last'])) {
       $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 %s</ul>',

                $this->getPreviousButton(),
                $this->getNextButton()
            );
        } else {
            return sprintf(
                '<ul class="pagination"> %s %s %s %s %s %s %s %s </ul>',
                //顯示數量頁碼信息
                $this->totalshow(),
               //第一頁
                $this->showfirstpage(),
               //上一頁
                $this->getPreviousButton(),
               //前五頁
                $this->bfivepage(),
               //頁碼
                $this->getLinks(),
               //後五頁
                $this->afivepage(),
                //下一頁
                $this->getNextButton(),
               //最後一頁
                $this->showlastpage()
                //最後再加個參數 %s 能夠顯示跳轉到哪頁
              //  $this->gopage()

            );
        }
    }
}

/**
 * 生成一個可點擊的按鈕
 *
 * @param  string $url
 * @param  int    $page
 * @return string
 */
protected function getAvailablePageWrapper($url, $page)
{
    return '<li><a href="' . htmlentities($url) . '">' . $page . '</a></li>';
}

/**
 * 生成一個禁用的按鈕
 *
 * @param  string $text
 * @return string
 */
protected function getDisabledTextWrapper($text)
{
    return '<li class="disabled"><span>' . $text . '</span></li>';
}

/**
 * 生成一個激活的按鈕
 *
 * @param  string $text
 * @return string
 */
protected function getActivePageWrapper($text)
{
    return '<li class="active"><span>' . $text . '</span></li>';
}

/**
 * 生成省略號按鈕
 *
 * @return string
 */
protected function getDots($text = '...')
{

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

  //  return $this->getPageLinkWrapper($url, $text);
   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);
}

}code

三、使用方法

$test=Db::name("test")->paginate(2,false, [ 'type'=>'BootstrapDetailed' ] );

相關文章
相關標籤/搜索