/** * Resource index action. * * @param Request $request * @return Response */ public function indexAction(Request $request) { $criteria = $this->config->getCriteria(); $sorting = $this->config->getSorting(); $repository = $this->getRepository(); if ($this->config->isPaginated()) { $resources = $this->resourceResolver->getResource($repository, 'createPaginator', array($criteria, $sorting)); $resources->setCurrentPage($request->get('page', 1), true, true); $resources->setMaxPerPage($this->config->getPaginationMaxPerPage()); if ($this->config->isApiRequest()) { $resources = $this->getPagerfantaFactory()->createRepresentation($resources, new Route($request->attributes->get('_route'), array_merge($request->attributes->get('_route_params'), $request->query->all()))); } } else { $resources = $this->resourceResolver->getResource($repository, 'findBy', array($criteria, $sorting, $this->config->getLimit())); } $view = $this->view()->setTemplate($this->config->getTemplate('index.html'))->setTemplateVar($this->config->getPluralResourceName())->setData($resources); $response = $this->handleView($view); if ($response->isSuccessful()) { $this->actionLogger && $this->actionLogger->indexLog(); } return $this->prepareResponse($response); }