Sylius\Bundle\ResourceBundle\Controller\ResourceController::createAction PHP Method

createAction() public method

public createAction ( Request $request ) : Response
$request Symfony\Component\HttpFoundation\Request
return Symfony\Component\HttpFoundation\Response
    public function createAction(Request $request)
    {
        $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);
        $this->isGrantedOr403($configuration, ResourceActions::CREATE);
        $newResource = $this->newResourceFactory->create($configuration, $this->factory);
        $form = $this->resourceFormFactory->create($configuration, $newResource);
        if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
            $newResource = $form->getData();
            $event = $this->eventDispatcher->dispatchPreEvent(ResourceActions::CREATE, $configuration, $newResource);
            if ($event->isStopped() && !$configuration->isHtmlRequest()) {
                throw new HttpException($event->getErrorCode(), $event->getMessage());
            }
            if ($event->isStopped()) {
                $this->flashHelper->addFlashFromEvent($configuration, $event);
                return $this->redirectHandler->redirectToIndex($configuration, $newResource);
            }
            if ($configuration->hasStateMachine()) {
                $this->stateMachine->apply($configuration, $newResource);
            }
            $this->repository->add($newResource);
            $this->eventDispatcher->dispatchPostEvent(ResourceActions::CREATE, $configuration, $newResource);
            if (!$configuration->isHtmlRequest()) {
                return $this->viewHandler->handle($configuration, View::create($newResource, Response::HTTP_CREATED));
            }
            $this->flashHelper->addSuccessFlash($configuration, ResourceActions::CREATE, $newResource);
            return $this->redirectHandler->redirectToResource($configuration, $newResource);
        }
        if (!$configuration->isHtmlRequest()) {
            return $this->viewHandler->handle($configuration, View::create($form, Response::HTTP_BAD_REQUEST));
        }
        $view = View::create()->setData(['configuration' => $configuration, 'metadata' => $this->metadata, 'resource' => $newResource, $this->metadata->getName() => $newResource, 'form' => $form->createView()])->setTemplate($configuration->getTemplate(ResourceActions::CREATE . '.html'));
        return $this->viewHandler->handle($configuration, $view);
    }