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 分享