1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-23 20:00:27 +08:00
2020-04-03 19:20:46 +08:00

60 lines
1.3 KiB
PHP

<?php
namespace App\Library\Paginator\Adapter;
use Phalcon\Http\Request as HttpRequest;
use Phalcon\Paginator\Adapter\QueryBuilder as BaseQueryBuilder;
class QueryBuilder extends BaseQueryBuilder
{
protected $url;
protected $params = [];
public function paginate()
{
$pager = parent::paginate();
$this->initParams();
$pager->first = $this->buildPageUrl($pager->first);
$pager->previous = $this->buildPageUrl($pager->previous);
$pager->next = $this->buildPageUrl($pager->next);
$pager->last = $this->buildPageUrl($pager->last);
return $pager;
}
protected function initParams()
{
$request = new HttpRequest();
$params = $request->get();
if ($params) {
foreach ($params as $key => $value) {
if (strlen($value) == 0) {
unset($params[$key]);
}
}
}
$this->params = $params;
if (!empty($this->params['_url'])) {
$this->url = $this->params['_url'];
unset($this->params['_url']);
} else {
$this->url = $request->get('_url');
}
}
protected function buildPageUrl($page)
{
$this->params['page'] = $page;
return $this->url . '?' . http_build_query($this->params);
}
}