mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-26 20:52:44 +08:00
优化分页
This commit is contained in:
parent
d5dfd75c3d
commit
d37e92d139
@ -47,6 +47,7 @@ class IndexSlideList extends Cache
|
|||||||
'id' => $slide->id,
|
'id' => $slide->id,
|
||||||
'title' => $slide->title,
|
'title' => $slide->title,
|
||||||
'cover' => $slide->cover,
|
'cover' => $slide->cover,
|
||||||
|
'bg_color' => $slide->bg_color,
|
||||||
'target' => $slide->target,
|
'target' => $slide->target,
|
||||||
'content' => $slide->content,
|
'content' => $slide->content,
|
||||||
];
|
];
|
||||||
|
@ -2,20 +2,24 @@
|
|||||||
|
|
||||||
namespace App\Library\Paginator\Adapter;
|
namespace App\Library\Paginator\Adapter;
|
||||||
|
|
||||||
use Phalcon\Http\Request as HttpRequest;
|
use App\Library\Paginator\Query;
|
||||||
use Phalcon\Paginator\Adapter\QueryBuilder as BaseQueryBuilder;
|
use Phalcon\Paginator\Adapter\QueryBuilder as BaseQueryBuilder;
|
||||||
|
|
||||||
class QueryBuilder extends BaseQueryBuilder
|
class QueryBuilder extends BaseQueryBuilder
|
||||||
{
|
{
|
||||||
|
|
||||||
protected $url;
|
protected $baseUrl;
|
||||||
|
|
||||||
protected $params = [];
|
protected $params = [];
|
||||||
|
|
||||||
public function paginate()
|
public function paginate()
|
||||||
{
|
{
|
||||||
$pager = parent::paginate();
|
$pager = parent::paginate();
|
||||||
|
|
||||||
$this->initParams();
|
$query = new Query();
|
||||||
|
|
||||||
|
$this->baseUrl = $query->getBaseUrl();
|
||||||
|
$this->params = $query->getParams();
|
||||||
|
|
||||||
$pager->first = $this->buildPageUrl($pager->first);
|
$pager->first = $this->buildPageUrl($pager->first);
|
||||||
$pager->previous = $this->buildPageUrl($pager->previous);
|
$pager->previous = $this->buildPageUrl($pager->previous);
|
||||||
@ -25,35 +29,11 @@ class QueryBuilder extends BaseQueryBuilder
|
|||||||
return $pager;
|
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)
|
protected function buildPageUrl($page)
|
||||||
{
|
{
|
||||||
$this->params['page'] = $page;
|
$this->params['page'] = $page;
|
||||||
|
|
||||||
return $this->url . '?' . http_build_query($this->params);
|
return $this->baseUrl . '?' . http_build_query($this->params);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Library\Paginator\Adapter;
|
namespace App\Library\Paginator\Adapter;
|
||||||
|
|
||||||
use Phalcon\Http\Request as HttpRequest;
|
use App\Library\Paginator\Query;
|
||||||
use Phalcon\Paginator\Adapter as PaginatorAdapter;
|
use Phalcon\Paginator\Adapter as PaginatorAdapter;
|
||||||
use Phalcon\Paginator\Exception as PaginatorException;
|
use Phalcon\Paginator\Exception as PaginatorException;
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ class XunSearch extends PaginatorAdapter
|
|||||||
|
|
||||||
protected $config;
|
protected $config;
|
||||||
|
|
||||||
protected $url;
|
protected $baseUrl;
|
||||||
|
|
||||||
protected $params = [];
|
protected $params = [];
|
||||||
|
|
||||||
@ -58,6 +58,11 @@ class XunSearch extends PaginatorAdapter
|
|||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
$this->_page = $config['page'] ?? 1;
|
$this->_page = $config['page'] ?? 1;
|
||||||
$this->_limitRows = $config['limit'] ?? 15;
|
$this->_limitRows = $config['limit'] ?? 15;
|
||||||
|
|
||||||
|
$query = new Query();
|
||||||
|
|
||||||
|
$this->baseUrl = $query->getBaseUrl();
|
||||||
|
$this->params = $query->getParams();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function paginate()
|
public function paginate()
|
||||||
@ -106,8 +111,6 @@ class XunSearch extends PaginatorAdapter
|
|||||||
$pager->total_items = $totalCount;
|
$pager->total_items = $totalCount;
|
||||||
$pager->items = $items;
|
$pager->items = $items;
|
||||||
|
|
||||||
$this->initParams();
|
|
||||||
|
|
||||||
$pager->first = $this->buildPageUrl($pager->first);
|
$pager->first = $this->buildPageUrl($pager->first);
|
||||||
$pager->previous = $this->buildPageUrl($pager->previous);
|
$pager->previous = $this->buildPageUrl($pager->previous);
|
||||||
$pager->next = $this->buildPageUrl($pager->next);
|
$pager->next = $this->buildPageUrl($pager->next);
|
||||||
@ -121,35 +124,11 @@ class XunSearch extends PaginatorAdapter
|
|||||||
return $this->paginate();
|
return $this->paginate();
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
protected function buildPageUrl($page)
|
||||||
{
|
{
|
||||||
$this->params['page'] = $page;
|
$this->params['page'] = $page;
|
||||||
|
|
||||||
return $this->url . '?' . http_build_query($this->params);
|
return $this->baseUrl . '?' . http_build_query($this->params);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,22 @@
|
|||||||
|
|
||||||
namespace App\Library\Paginator;
|
namespace App\Library\Paginator;
|
||||||
|
|
||||||
use Phalcon\Mvc\User\Component;
|
use Phalcon\Di;
|
||||||
|
use Phalcon\Http\Request;
|
||||||
|
|
||||||
class Query extends Component
|
class Query
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Request
|
||||||
|
*/
|
||||||
|
protected $request;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->request = Di::getDefault()->get('request');
|
||||||
|
}
|
||||||
|
|
||||||
public function getPage()
|
public function getPage()
|
||||||
{
|
{
|
||||||
$page = $this->request->get('page', 'int', 1);
|
$page = $this->request->get('page', 'int', 1);
|
||||||
@ -26,14 +37,28 @@ class Query extends Component
|
|||||||
return $this->request->get('sort', 'trim', '');
|
return $this->request->get('sort', 'trim', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUrl()
|
public function getBaseUrl()
|
||||||
{
|
{
|
||||||
return $this->request->get('_url', 'trim', '');
|
return $this->request->get('_url', 'trim', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getParams()
|
public function getParams()
|
||||||
{
|
{
|
||||||
return $this->request->get();
|
$params = $this->request->get();
|
||||||
|
|
||||||
|
if ($params) {
|
||||||
|
foreach ($params as $key => $value) {
|
||||||
|
if (strlen($value) == 0) {
|
||||||
|
unset($params[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($params['_url'])) {
|
||||||
|
unset($params['_url']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $params;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,35 @@ class CourseSearch extends FrontendService
|
|||||||
|
|
||||||
$pager = $paginator->getPaginate();
|
$pager = $paginator->getPaginate();
|
||||||
|
|
||||||
dd($pager);
|
return $this->handleCourses($pager);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handleCourses($pager)
|
||||||
|
{
|
||||||
|
if ($pager->total_items == 0) {
|
||||||
|
return $pager;
|
||||||
|
}
|
||||||
|
|
||||||
|
$items = [];
|
||||||
|
|
||||||
|
foreach ($pager->items as $course) {
|
||||||
|
$items[] = [
|
||||||
|
'id' => $course['id'],
|
||||||
|
'title' => $course['title'],
|
||||||
|
'cover' => $course['cover'],
|
||||||
|
'market_price' => (float)$course['market_price'],
|
||||||
|
'vip_price' => (float)$course['vip_price'],
|
||||||
|
'rating' => (float)$course['rating'],
|
||||||
|
'model' => $course['model'],
|
||||||
|
'level' => $course['level'],
|
||||||
|
'user_count' => $course['user_count'],
|
||||||
|
'lesson_count' => $course['lesson_count'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$pager->items = $items;
|
||||||
|
|
||||||
|
return $pager;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user