public function testGetAdminForClassWhenAdminClassIsSet() { $this->pool->setAdminServiceIds(array('sonata.user.admin.group1')); $this->pool->setAdminClasses(array('someclass' => array('sonata.user.admin.group1'))); $this->assertTrue($this->pool->hasAdminByClass('someclass')); $this->assertSame('adminUserClass', $this->pool->getAdminByClass('someclass')); }
/** * {@inheritdoc} */ public function supports(PuliResource $resource) { if (false === $resource instanceof CmfResource) { return false; } $payload = $resource->getPayload(); // sonata has dependency on ClassUtils so this is fine. $class = ClassUtils::getClass($payload); return $this->pool->hasAdminByClass($class); }
/** * {@inheritdoc} */ public function enhance(array $data, Resource $resource) { $object = $resource->getPayload(); // sonata has dependency on ClassUtils so this is fine. $class = ClassUtils::getClass($object); if (false === $this->pool->hasAdminByClass($class)) { return $data; } $admin = $this->pool->getAdminByClass($class); $links = array(); $routeCollection = $admin->getRoutes(); foreach ($routeCollection->getElements() as $code => $route) { $routeName = $route->getDefault('_sonata_name'); $url = $this->urlGenerator->generate($routeName, array($admin->getIdParameter() => $admin->getUrlsafeIdentifier($object)), true); $routeRole = substr($code, strlen($admin->getCode()) + 1); $links[$routeRole] = $url; } $data['label'] = $admin->toString($object); $data['sonata_label'] = $admin->getLabel(); $data['sonata_links'] = $links; return $data; }