当前位置: 首页 > Notes > PHP > 解决在 webman 中使用 jasongrimes/paginator 分页组件与 Bootstrap 4 兼容性问题

解决在 webman 中使用 jasongrimes/paginator 分页组件与 Bootstrap 4 兼容性问题

发布于:2023-6-18 PHP 0条评论 2,820 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

webman是一款基于workerman开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTTP接口或者微服务。

76b11b5e7fd82ef5.png

webman中使用 jasongrimes/paginator 分页组件

webman分页使用了下面2个PHP组件:

  • illuminate/pagination
  • jasongrimes/paginator:~1.0

webman官方文档:https://www.workerman.net/doc/webman/db/paginator.html 已经给出比较详细的使用方法。但是官方文档分页方法仅适用于Bootstrap 3,在Bootstrap 4下存在兼容性问题。

解决jasongrimes/paginator 分页组件与 Bootstrap 4 兼容性问题

jasongrimes/paginator这个PHP组件作者已经不再维护,导致没有兼容Bootstrap 4,在Bootstrap 4下分页样式存在问题。

解决办法是修改vendor/jasongrimes/paginator/src/JasonGrimes/Paginator.php这个文件,找到toHtml()这个函数将其修改为:

/**
     * Render an HTML pagination control.
     *
     * @return string
     */
    public function toHtml()
    {
        if ($this->numPages <= 1) {
            return '';
        }

        $html = '<ul class="pagination">';
        if ($this->getPrevUrl()) {
            $html .= '<li class="page-item"><a class="page-link" href="' . htmlspecialchars($this->getPrevUrl()) . '" rel="external nofollow" target = "_blank" >&laquo; '. $this->previousText .'</a></li>';
        }

        foreach ($this->getPages() as $page) {
            if ($page['url']) {
                $html .= '<li' . ($page['isCurrent'] ? ' class="active page-item"' : '') . '><a class="page-link" href="' . htmlspecialchars($page['url']) . '" rel="external nofollow" target = "_blank" >' . htmlspecialchars($page['num']) . '</a></li>';
            } else {
                $html .= '<li class="disabled page-item"><span class="page-link">' . htmlspecialchars($page['num']) . '</span></li>';
            }
        }

        if ($this->getNextUrl()) {
            $html .= '<li class="page-item"><a class="page-link" href="' . htmlspecialchars($this->getNextUrl()) . '" rel="external nofollow" target = "_blank" >'. $this->nextText .' &raquo;</a></li>';
        }
        $html .= '</ul>';

        return $html;
    }

修改后分页样式就能正常显示了,如下效果。

3793d80d353f7fc3.png

jasongrimes/paginator限制分页展示数量

在手机设备上,由于宽度有限,会发现jasongrimes/paginator组件撑出了屏幕宽度,只需要调用下面这个函数即可。

$paginator->setMaxPagesToShow(3);

此文部分内容参考了:https://github.com/jasongrimes/php-paginator/issues/17


发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注