/** * {@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()); }
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); }