Example #1
0
 /**
  * {@inheritdoc}
  */
 public function createAction(Request $request)
 {
     $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
     if (!$this->authorizationChecker->isGranted($configuration, $this->metadata)) {
         throw new AccessDeniedHttpException();
     }
     $this->isGrantedOr403($configuration, ResourceActions::CREATE);
     $newResource = $this->newResourceFactory->create($configuration, $this->factory);
     $form = $this->resourceFormFactory->create($configuration, $newResource);
     if ($request->isMethod('POST')) {
         if ($form->handleRequest($request)->isValid()) {
             $newResource = $form->getData();
             $this->eventDispatcher->dispatchPreEvent(ResourceActions::CREATE, $configuration, $newResource);
             $this->repository->add($newResource);
             $this->sortingManger->initialize($configuration, $this->metadata, $newResource, $this->repository);
             $this->eventDispatcher->dispatchPostEvent(ResourceActions::CREATE, $configuration, $newResource);
         }
     }
     $viewer = $this->viewerFactory->create($configuration, $this->metadata, $newResource, $form, 'create');
     return $this->viewHandler->handle($configuration, $viewer->createView());
 }
Example #2
0
 public function duplicateAction(Request $request)
 {
     $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
     if (!$this->authorizationChecker->isGranted($configuration, $this->metadata)) {
         throw new AccessDeniedHttpException();
     }
     $this->isGrantedOr403($configuration, ResourceActions::CREATE);
     $resource = $this->findOr404($configuration);
     if (!$this->newResourceFactory instanceof DuplicateResourceFactoryInterface) {
         throw new \Exception('newResourceFactory should implement DuplicateResourceFactoryInterface');
     }
     $newResource = $this->newResourceFactory->duplicate($configuration, $this->factory, $resource);
     $this->eventDispatcher->dispatchPreEvent(ResourceActions::CREATE, $configuration, $newResource);
     $this->repository->add($newResource);
     $this->sortingManger->initialize($configuration, $this->metadata, $newResource, $this->repository);
     $this->eventDispatcher->dispatchPostEvent(ResourceActions::CREATE, $configuration, $newResource);
     return $this->redirectHandler->redirectToResource($configuration, $newResource);
 }