/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var CollectPublicResourcesContext $context */ $resources = $context->getResult(); $entities = $this->dictionaryProvider->getSupportedEntityClasses(); foreach ($entities as $entityClass) { $resources->add(new PublicResource($entityClass)); } }
/** * @return array [[entity plural alias, url safe class name], ...] */ protected function getSupportedEntities() { if (null === $this->supportedEntities) { $entities = $this->dictionaryProvider->getSupportedEntityClasses(); $this->supportedEntities = []; foreach ($entities as $className) { $this->supportedEntities[] = [$this->entityAliasResolver->getPluralAlias($className), $this->entityClassNameHelper->getUrlSafeClassName($className)]; } } return $this->supportedEntities; }
/** * {@inheritdoc} */ public function resolve(Route $route, RouteCollectionAccessor $routes) { if ($route->getOption('group') !== self::ROUTE_GROUP) { return; } if ($this->hasAttribute($route, self::ENTITY_PLACEHOLDER)) { $entities = $this->dictionaryProvider->getSupportedEntityClasses(); if (!empty($entities)) { $entities = $this->adjustRoutes($route, $routes, $entities); if (!empty($entities)) { $route->setRequirement(self::ENTITY_ATTRIBUTE, implode('|', $entities)); } } } }
/** * {@inheritdoc} */ public function getListQueryBuilder($limit = 10, $page = 1, $criteria = [], $orderBy = null, $joins = []) { $qb = $this->dictionaryProvider->getValueListQueryBuilder($this->class); if ($qb instanceof QueryBuilder) { if ($limit >= 0) { $qb->setMaxResults($limit); $qb->setFirstResult($this->getOffset($page, $limit)); } if ($orderBy) { $qb->orderBy($orderBy); } } elseif (null !== $qb) { throw new \RuntimeException(sprintf('Expected instance of Doctrine\\ORM\\QueryBuilder, "%s" given.', is_object($qb) ? get_class($qb) : gettype($qb))); } return $qb; }
/** * @dataProvider entityProvider */ public function testGetSupportedEntityClasses($supported1, $supported2, $expected) { $this->provider1->expects($this->once())->method('getSupportedEntityClasses')->willReturn($supported1); $this->provider2->expects($this->once())->method('getSupportedEntityClasses')->willReturn($supported2); $this->assertEquals($expected, $this->chainProvider->getSupportedEntityClasses()); }