/**
  * Sets the pagination for this data provider.
  * @param array|PaginationProvider|boolean $value the pagination to be used by this data provider.
  * This can be one of the following:
  *
  * - a configuration array for creating the pagination object. The "class" element defaults
  *   to 'rock\db\common\PaginationProvider'
  * - an instance of {@see \rock\data\PaginationProvider} or its subclass
  * - false, if pagination needs to be disabled.
  *
  * @throws DataProviderException
  */
 public function setPagination($value)
 {
     if (is_array($value)) {
         $config = ['class' => PaginationProvider::className()];
         $this->_pagination = Instance::ensure(array_merge($config, $value));
     } elseif ($value instanceof PaginationProvider || $value === false) {
         $this->_pagination = $value;
     } else {
         throw new DataProviderException('Only Pagination instance, configuration array or false is allowed.');
     }
 }
示例#2
0
 /**
  * Adds HTTP headers about the pagination to the response.
  * @param PaginationProvider $pagination
  */
 protected function addPaginationHeaders(PaginationProvider $pagination)
 {
     $links = [];
     foreach ($pagination->getLinks(true) as $rel => $url) {
         $links[] = "<{$url}>; rel={$rel}";
     }
     $this->response->getHeaders()->set($this->totalCountHeader, $pagination->totalCount)->set($this->pageCountHeader, $pagination->pageCount)->set($this->currentPageHeader, $pagination->getPage())->set($this->perPageHeader, $pagination->limit)->set('Link', implode(', ', $links));
 }