修正分页类简洁模式

This commit is contained in:
yunwuxin
2016-05-15 10:37:37 +08:00
parent 19d5b1fee9
commit cf6836b56d
2 changed files with 31 additions and 19 deletions

View File

@@ -53,12 +53,13 @@ abstract class Paginator
$this->simple = $simple;
$this->listRows = $listRows;
$this->items = PaginatorCollection::make($items, $this);
if ($simple) {
if (!$items instanceof Collection) {
$items = Collection::make($items);
}
$this->currentPage = $this->setCurrentPage($currentPage);
$this->hasMore = count($this->items) > ($this->listRows);
$this->items = $this->items->slice(0, $this->listRows);
$this->hasMore = count($items) > ($this->listRows);
$items = $items->slice(0, $this->listRows);
} else {
$this->total = $total;
$this->lastPage = (int)ceil($total / $listRows);
@@ -66,6 +67,7 @@ abstract class Paginator
$this->hasMore = $this->currentPage < $this->lastPage;
}
$this->items = PaginatorCollection::make($items, $this);
}
public function items()

View File

@@ -32,9 +32,6 @@ class Collection extends \think\Collection
public function __construct($items = [], Paginator $paginator = null)
{
if (!$paginator instanceof Paginator) {
throw new \RuntimeException('Paginator Required!');
}
$this->paginator = $paginator;
parent::__construct($items);
}
@@ -44,26 +41,39 @@ class Collection extends \think\Collection
return new static($items, $paginator);
}
public function setPaginator(Paginator $paginator)
{
$this->paginator = $paginator;
}
public function getPaginator()
{
return $this->paginator;
}
public function toArray()
{
try {
$total = $this->total();
} catch (Exception $e) {
$total = null;
}
if ($this->paginator) {
try {
$total = $this->total();
} catch (Exception $e) {
$total = null;
}
return [
'total' => $total,
'per_page' => $this->listRows(),
'current_page' => $this->currentPage(),
'data' => parent::toArray()
];
return [
'total' => $total,
'per_page' => $this->listRows(),
'current_page' => $this->currentPage(),
'data' => parent::toArray()
];
} else {
return parent::toArray();
}
}
public function __call($method, $args)
{
if (method_exists($this->paginator, $method)) {
if ($this->paginator && method_exists($this->paginator, $method)) {
return call_user_func_array([$this->paginator, $method], $args);
} else {
throw new Exception(__CLASS__ . ':' . $method . ' method not exist');