webman是一款基于workerman开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTTP接口或者微服务。
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" >« '. $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 .' »</a></li>';
}
$html .= '</ul>';
return $html;
}
修改后分页样式就能正常显示了,如下效果。
jasongrimes/paginator限制分页展示数量
在手机设备上,由于宽度有限,会发现jasongrimes/paginator
组件撑出了屏幕宽度,只需要调用下面这个函数即可。
$paginator->setMaxPagesToShow(3);
此文部分内容参考了:https://github.com/jasongrimes/php-paginator/issues/17