/** * Populate content for the request * * @param Route $route * @param Request $request */ protected function populateContent(Route $route, Request $request) { $content = $route->getContent(); $name = $content; if ($route->isList()) { $name .= 's'; $value = $this->repository->getContents($content, $route->getIndexBy(), $route->getOrder()); if ($route->isPaginated()) { $paginator = new Paginator($value, $route->getPerPage()); $value = $paginator->get($request->attributes->get('page')); $request->attributes->set('paginator', $paginator); } } else { $value = $this->repository->getContent($content, $request->attributes->get($content)); } $request->attributes->set($name, $value); }
/** * Build paginated route * * @param Route $route * @param string $name */ protected function buildPaginatedRoute(Route $route, $name) { $contentType = $route->getContent(); $contents = $this->app['content_repository']->listContents($contentType); $paginator = new Paginator($contents, $route->getPerPage()); $this->logger->log(sprintf('Building route <comment>%s</comment> for <info>%s</info> pages', $name, $paginator->count())); $this->logger->getProgress($paginator->count()); $this->logger->start(); foreach ($paginator as $index => $contents) { $this->builder->build($route, $name, ['page' => $index + 1]); $this->logger->advance(); } $this->logger->finish(); }