/** * Prepares a data provider * * @param DataProviderInterface|ActiveDataProvider $dataProvider the data provider to prepare * * @return array the prepared response */ public function prepareActiveDataProvider(DataProviderInterface $dataProvider) { $data = array_map(array($this, 'prepare'), $dataProvider->getData()); $pagination = $dataProvider->getPagination(); $model = $dataProvider->model; if ($model instanceof ModelInterface) { $containerName = $model->controllerID(); } else { $containerName = lcfirst(get_class($model)); } $prepared = array('total' => (int) $dataProvider->getTotalItemCount(), 'limit' => $pagination ? $pagination->getPageSize() : null, 'currentPage' => $pagination ? $pagination->getCurrentPage() + 1 : null, 'params' => $dataProvider->getParams(), '_embedded' => array($containerName => $data), '_links' => array()); $prepared['_links'] = $dataProvider->getLinks(); return $prepared; }