ThinkPHP6自定義分頁

thinkphp6.0給我們預定義了paginate分頁類,幫助我們快速分頁,但是thinkphp6提供的分頁的樣式并不是我們想要的,需要我們自己擴展分頁類,看看具體如何實現吧!

首先我們去復制一份官方的寫好的分頁類,并在此基礎上進行修改,具體的路徑在vendor/topthink/think-orm/src/paginator/driver/bootstrap.php,然后在app/common/Bootstrap.php粘貼。

修改app/provider.php服務提供者,修改默認的分頁驅動為我們的驅動。

<?php use appExceptionHandle; use appRequest; // 容器Provider定義文件 return [     &#39;thinkRequest&#39;          =>?Request::class, ????'thinkexceptionHandle'?=&gt;?ExceptionHandle::class, ????'thinkPaginator'????=&gt;????'appcommonBootstrap' ];

閱讀app/common/Bootstrap.php代碼,在此基礎上修改。以下是官方提供的分頁代碼vendor/topthink/think-orm/src/paginator/driver/Bootstrap.php

<?php // +---------------------------------------------------------------------- // | thinkphp [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: zhangyajun <448901948@qq.com> //?+---------------------------------------------------------------------- namespace?thinkpaginatordriver; use?thinkPaginator; /** ?*?Bootstrap?分頁驅動 ?*/ class?Bootstrap?extends?Paginator { ????/** ?????*?上一頁按鈕 ?????*?@param?string?$text ?????*?@return?string ?????*/ ????protected?function?getPreviousButton(string?$text?=?"?"):?string ????{ ????????if?($this-&gt;currentPage()?getDisabledTextWrapper($text); ????????} ????????$url?=?$this-&gt;url( ????????????$this-&gt;currentPage()?-?1 ????????); ????????return?$this-&gt;getPageLinkWrapper($url,?$text); ????} ????/** ?????*?下一頁按鈕 ?????*?@param?string?$text ?????*?@return?string ?????*/ ????protected?function?getNextButton(string?$text?=?'?'):?string ????{ ????????if?(!$this-&gt;hasMore)?{ ????????????return?$this-&gt;getDisabledTextWrapper($text); ????????} ????????$url?=?$this-&gt;url($this-&gt;currentPage()?+?1); ????????return?$this-&gt;getPageLinkWrapper($url,?$text); ????} ????/** ?????*?頁碼按鈕 ?????*?@return?string ?????*/ ????protected?function?getLinks():?string ????{ ????????if?($this-&gt;simple)?{ ????????????return?''; ????????} ????????$block?=?[ ????????????'first'??=&gt;?null, ????????????'slider'?=&gt;?null, ????????????'last'???=&gt;?null, ????????]; ????????$side???=?3; ????????$window?=?$side?*?2; ????????if?($this-&gt;lastPage?getUrlRange(1,?$this-&gt;lastPage); ????????}?elseif?($this-&gt;currentPage?getUrlRange(1,?$window?+?2); ????????????$block['last']??=?$this-&gt;getUrlRange($this-&gt;lastPage?-?1,?$this-&gt;lastPage); ????????}?elseif?($this-&gt;currentPage?&gt;?($this-&gt;lastPage?-?$window))?{ ????????????$block['first']?=?$this-&gt;getUrlRange(1,?2); ????????????$block['last']??=?$this-&gt;getUrlRange($this-&gt;lastPage?-?($window?+?2),?$this-&gt;lastPage); ????????}?else?{ ????????????$block['first']??=?$this-&gt;getUrlRange(1,?2); ????????????$block['slider']?=?$this-&gt;getUrlRange($this-&gt;currentPage?-?$side,?$this-&gt;currentPage?+?$side); ????????????$block['last']???=?$this-&gt;getUrlRange($this-&gt;lastPage?-?1,?$this-&gt;lastPage); ????????} ????????$html?=?''; ????????if?(is_array($block['first']))?{ ????????????$html?.=?$this-&gt;getUrlLinks($block['first']); ????????} ????????if?(is_array($block['slider']))?{ ????????????$html?.=?$this-&gt;getDots(); ????????????$html?.=?$this-&gt;getUrlLinks($block['slider']); ????????} ????????if?(is_array($block['last']))?{ ????????????$html?.=?$this-&gt;getDots(); ????????????$html?.=?$this-&gt;getUrlLinks($block['last']); ????????} ????????return?$html; ????} ????/** ?????*?渲染分頁html ?????*?@return?mixed ?????*/ ????public?function?render() ????{ ????????if?($this-&gt;hasPages())?{ ????????????if?($this-&gt;simple)?{ ????????????????return?sprintf( ????????????????????'
    %s?%s

‘, ????????????????????$this->getPreviousButton(), ????????????????????$this->getNextButton() ????????????????); ????????????}?else?{ ????????????????return?sprintf( ????????????????????‘

    %s?%s?%s

‘, ????????????????????$this->getPreviousButton(), ????????????????????$this->getLinks(), ????????????????????$this->getNextButton() ????????????????); ????????????} ????????} ????} ????/** ?????*?生成一個可點擊的按鈕 ?????* ?????*?@param??string?$url ?????*?@param??string?$page ?????*?@return?string ?????*/ ????protected?function?getAvailablePageWrapper(string?$url,?string?$page):?string ????{ ????????return?‘

  • ‘?.?$page?.?‘
  • ‘; ????} ????/** ?????*?生成一個禁用的按鈕 ?????* ?????*?@param??string?$text ?????*?@return?string ?????*/ ????protected?function?getDisabledTextWrapper(string?$text):?string ????{ ????????return?‘

  • ‘?.?$text?.?‘
  • ‘; ????} ????/** ?????*?生成一個激活的按鈕 ?????* ?????*?@param??string?$text ?????*?@return?string ?????*/ ????protected?function?getActivePageWrapper(string?$text):?string ????{ ????????return?‘

  • ‘?.?$text?.?‘
  • ‘; ????} ????/** ?????*?生成省略號按鈕 ?????* ?????*?@return?string ?????*/ ????protected?function?getDots():?string ????{ ????????return?$this->getDisabledTextWrapper(‘…’); ????} ????/** ?????*?批量生成頁碼按鈕. ?????* ?????*?@param??array?$urls ?????*?@return?string ?????*/ ????protected?function?getUrlLinks(array?$urls):?string ????{ ????????$html?=?”; ????????foreach?($urls?as?$page?=>?$url)?{ ????????????$html?.=?$this->getPageLinkWrapper($url,?$page); ????????} ????????return?$html; ????} ????/** ?????*?生成普通頁碼按鈕 ?????* ?????*?@param??string?$url ?????*?@param??string????$page ?????*?@return?string ?????*/ ????protected?function?getPageLinkWrapper(string?$url,?string?$page):?string ????{ ????????if?($this->currentPage()?==?$page)?{ ????????????return?$this->getActivePageWrapper($page); ????????} ????????return?$this->getAvailablePageWrapper($url,?$page); ????} }

    例如簡單修改上一頁下一頁為中文漢字,修改以下地方。
    ?

    立即學習PHP免費學習筆記(深入)”;

    /** ?????*?上一頁按鈕 ?????*?@param?string?$text ?????*?@return?string ?????*/ ????protected?function?getPreviousButton(string?$text?=?"上一頁"):?string ????{ ????????if?($this-&gt;currentPage()?getDisabledTextWrapper($text); ????????} ????????$url?=?$this-&gt;url( ????????????$this-&gt;currentPage()?-?1 ????????); ????????return?$this-&gt;getPageLinkWrapper($url,?$text); ????} ????/** ?????*?下一頁按鈕 ?????*?@param?string?$text ?????*?@return?string ?????*/ ????protected?function?getNextButton(string?$text?=?'下一頁'):?string ????{ ????????if?(!$this-&gt;hasMore)?{ ????????????return?$this-&gt;getDisabledTextWrapper($text); ????????} ????????$url?=?$this-&gt;url($this-&gt;currentPage()?+?1); ????????return?$this-&gt;getPageLinkWrapper($url,?$text); ????}

    然后根據自己的業務需求進行修改!

    推薦教程:《PHP教程》《PHP教程

    ? 版權聲明
    THE END
    喜歡就支持一下吧
    點贊13 分享