/** * @param Request $request * @param Tag $tag * @return Response */ public function nodeListAction(Request $request, $tag) { $listHandler = TagListHandler::fromRequest($request); if (!$listHandler->getEntity()) { throw new BadRequestHttpException('You must specify the _entity key in the route defaults'); } if (!$listHandler->getField()) { throw new BadRequestHttpException('You must specify the _field key in the route defaults'); } /** @var EntityManager $entityManager */ $entityManager = $this->getDoctrine()->getManager(); $queryBuilder = $entityManager->createQueryBuilder(); $listHandler->buildQuery($queryBuilder); $paginator = new Paginator($queryBuilder); return $this->render($listHandler->getTemplate(), ['tag' => $tag, 'nodes' => $paginator, 'page_title' => $listHandler->getTitle()]); }
/** * @param FieldableEntity|Tag $entity * @param array $options * @return array */ public function getTemplateOptions(FieldableEntity $entity, array $options = []) { foreach ($options['node_types'] as $nodeClass => $nodeField) { $listHandler = new TagListHandler($nodeClass); $listHandler->setField($nodeField); $listHandler->setTag($entity->getName()); $listHandler->setPageSize($options['page_size']); $listHandler->setTitle($entity->getName()); } $queryBuilder = new QueryBuilder($this->entityManager); $listHandler->buildQuery($queryBuilder); $nodes = $queryBuilder->getQuery()->execute(); return ['tag' => $entity->getName(), 'nodes' => $nodes]; }