コード例 #1
0
 private function voteAccess(DefinitionInterface $definition, $attribute)
 {
     if ($attribute === 'CRUDIFY_CREATE') {
         if ($definition->withCreate()) {
             return $this->defaultAccess;
         } else {
             return VoterInterface::ACCESS_DENIED;
         }
     }
     if ($attribute === 'CRUDIFY_UPDATE') {
         if ($definition->withUpdate()) {
             return $this->defaultAccess;
         } else {
             return VoterInterface::ACCESS_DENIED;
         }
     }
     if ($attribute === 'CRUDIFY_DELETE') {
         if ($definition->withDelete()) {
             return $this->defaultAccess;
         } else {
             return VoterInterface::ACCESS_DENIED;
         }
     }
     return $this->defaultAccess;
 }
コード例 #2
0
 function let(DefinitionInterface $definition, EntityManager $manager, ClassMetadata $metadata)
 {
     $entity = 'AcmeBundle:Test';
     $definition->getName()->willReturn('test');
     $definition->getEntityName()->willReturn($entity);
     $definition->getEntityManager()->willReturn($manager);
     $manager->getClassMetadata($entity)->willReturn($metadata);
     $metadata->getName()->willReturn($entity);
 }
コード例 #3
0
 /**
  * @param object $object
  * @return mixed
  * @throws UnsupportedEntityException
  */
 public function getId(DefinitionInterface $definition, $object)
 {
     $metadata = $definition->getEntityManager()->getClassMetadata($definition->getEntityName());
     $identity = $metadata->getIdentifierValues($object);
     if (count($identity) !== 1) {
         throw new UnsupportedEntityException("Entity '{$metadata->getName()}' must have exactly one identifier column");
     }
     reset($identity);
     return current($identity);
 }
コード例 #4
0
 /**
  * @param string              $action
  * @param DefinitionInterface $definition
  * @param object|null         $object
  * @return string
  */
 public function getLinkForAction($action, DefinitionInterface $definition, $object = null)
 {
     $parameters = ['mapping' => $definition->getName()];
     if (is_object($object)) {
         $parameters['id'] = $this->identityResolver->getId($definition, $object);
     } elseif (is_int($object)) {
         $parameters['id'] = $object;
     }
     $route = "bravesheep_crudify.{$action}";
     return $this->router->generate($route, $parameters);
 }
コード例 #5
0
 function let(RouterInterface $router, IdentityResolver $identityResolver, DefinitionInterface $definition, \stdClass $object)
 {
     $this->beConstructedWith($router, $identityResolver);
     $router->generate('bravesheep_crudify.index', Argument::withKey('mapping'))->will(function ($args) {
         return '/' . $args[1]['mapping'] . '/index';
     });
     $router->generate('bravesheep_crudify.new', Argument::withKey('mapping'))->will(function ($args) {
         return '/' . $args[1]['mapping'] . '/new';
     });
     $router->generate('bravesheep_crudify.create', Argument::withKey('mapping'))->will(function ($args) {
         return '/' . $args[1]['mapping'] . '/create';
     });
     $router->generate('bravesheep_crudify.edit', Argument::allOf(Argument::withKey('mapping'), Argument::withKey('id')))->will(function ($args) {
         return '/' . $args[1]['mapping'] . '/edit/' . $args[1]['id'];
     });
     $router->generate('bravesheep_crudify.update', Argument::allOf(Argument::withKey('mapping'), Argument::withKey('id')))->will(function ($args) {
         return '/' . $args[1]['mapping'] . '/update/' . $args[1]['id'];
     });
     $router->generate('bravesheep_crudify.delete', Argument::allOf(Argument::withKey('mapping'), Argument::withKey('id')))->will(function ($args) {
         return '/' . $args[1]['mapping'] . '/delete/' . $args[1]['id'];
     });
     $definition->getName()->willReturn('test');
     $identityResolver->getId($definition, $object)->willReturn(42);
 }
コード例 #6
0
 /**
  * @param DefinitionInterface $definition
  * @return CrudControllerInterface
  */
 private function getController(DefinitionInterface $definition)
 {
     $controller = $definition->getController();
     return $this->container->get('bravesheep_crudify.resolver.controller')->resolve($controller);
 }
コード例 #7
0
 function it_should_not_allow_delete_access_if_the_definition_denies(DefinitionInterface $definition, TokenInterface $token)
 {
     $definition->withDelete()->willReturn(false);
     $this->vote($token, $definition, ['CRUDIFY_DELETE'])->shouldReturn(VoterInterface::ACCESS_DENIED);
 }
コード例 #8
0
 /**
  * {@inheritdoc}
  */
 public function indexAction(DefinitionInterface $definition, Request $request)
 {
     $query = $this->createSelectQuery($definition->getIndex());
     $grid = $this->getGrid($query, $definition, $request);
     return $this->render($definition->getTemplates()->getIndex(), ['definition' => $definition, 'objects' => $grid]);
 }
コード例 #9
0
 /**
  * {@inheritdoc}
  */
 public function retrieve(DefinitionInterface $definition, $id)
 {
     $repo = $definition->getEntityRepository();
     return $repo->find($id);
 }
コード例 #10
0
 function it_should_retrieve_the_object_from_the_repository(DefinitionInterface $definition, EntityRepository $repo, \stdClass $object)
 {
     $definition->getEntityRepository()->willReturn($repo);
     $repo->find(10)->shouldBeCalled()->willReturn($object);
     $this->retrieve($definition, 10)->shouldReturn($object);
 }
コード例 #11
0
 public function createDeleteForm(DefinitionInterface $definition, $object)
 {
     $controller = $this->controllerResolver->resolve($definition->getController());
     return $controller->createDeleteForm($definition, $object)->createView();
 }
コード例 #12
0
 /**
  * Add a translated flash to the flashbag, using the translation domain from the definition.
  * @param DefinitionInterface $definition
  * @param string              $type
  * @param string              $message
  * @param array               $vars
  */
 protected function addTranslatedFlash(DefinitionInterface $definition, $type, $message, array $vars = [])
 {
     /** @var Translator $trans */
     $trans = $this->get('translator');
     $message = $trans->trans($message, $vars, $definition->getTranslationDomain());
     /** @var Session $session */
     $session = $this->get('session');
     $session->getFlashBag()->add($type, $message);
 }