mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-23 20:00:27 +08:00
60 lines
1.3 KiB
PHP
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);
|
|
}
|
|
|
|
}
|