/** * {@inheritdoc} */ public function get(RequestConfiguration $requestConfiguration, RepositoryInterface $repository) { $resources = $this->resourcesResolver->getResources($requestConfiguration, $repository); if ($resources instanceof Pagerfanta) { $request = $requestConfiguration->getRequest(); $resources->setMaxPerPage($requestConfiguration->getPaginationMaxPerPage()); $resources->setCurrentPage($request->query->get('page', 1)); if (!$requestConfiguration->isHtmlRequest()) { $route = new Route($request->attributes->get('_route'), array_merge($request->attributes->get('_route_params'), $request->query->all())); return $this->pagerfantaRepresentationFactory->createRepresentation($resources, $route); } } return $resources; }
/** * {@inheritdoc} */ public function getResources(RequestConfiguration $requestConfiguration, RepositoryInterface $repository) { if (!$requestConfiguration->hasGrid()) { return $this->decoratedResolver->getResources($requestConfiguration, $repository); } $gridDefinition = $this->gridProvider->get($requestConfiguration->getGrid()); $request = $requestConfiguration->getRequest(); $parameters = new Parameters($request->query->all()); $gridView = $this->gridViewFactory->create($gridDefinition, $parameters, $requestConfiguration->getMetadata(), $requestConfiguration); if ($requestConfiguration->isHtmlRequest()) { return $gridView; } return $gridView->getData(); }
function it_creates_a_paginated_representation_for_pagerfanta_for_non_html_requests(ResourcesResolverInterface $resourcesResolver, RequestConfiguration $requestConfiguration, RepositoryInterface $repository, Pagerfanta $paginator, Request $request, ParameterBag $queryParameters, ParameterBag $requestAttributes, PagerfantaFactory $pagerfantaRepresentationFactory, PaginatedRepresentation $paginatedRepresentation) { $requestConfiguration->isHtmlRequest()->willReturn(false); $requestConfiguration->getPaginationMaxPerPage()->willReturn(8); $resourcesResolver->getResources($requestConfiguration, $repository)->willReturn($paginator); $requestConfiguration->getRequest()->willReturn($request); $request->query = $queryParameters; $queryParameters->get('page', 1)->willReturn(6); $queryParameters->all()->willReturn(['foo' => 2, 'bar' => 15]); $request->attributes = $requestAttributes; $requestAttributes->get('_route')->willReturn('sylius_product_index'); $requestAttributes->get('_route_params')->willReturn(['slug' => 'foo-bar']); $paginator->setMaxPerPage(8)->shouldBeCalled(); $paginator->setCurrentPage(6)->shouldBeCalled(); $pagerfantaRepresentationFactory->createRepresentation($paginator, Argument::type(Route::class))->willReturn($paginatedRepresentation); $this->get($requestConfiguration, $repository)->shouldReturn($paginatedRepresentation); }
function it_uses_decorated_resolver_when_not_using_a_grid(ResourcesResolverInterface $decoratedResolver, RequestConfiguration $requestConfiguration, RepositoryInterface $repository, ResourceInterface $resource) { $requestConfiguration->hasGrid()->willReturn(false); $decoratedResolver->getResources($requestConfiguration, $repository)->willReturn([$resource]); $this->getResources($requestConfiguration, $repository)->shouldReturn([$resource]); }