Sonata\ProductBundle\Controller\Api\ProductController::handleWriteProduct PHP Метод

handleWriteProduct() защищенный Метод

Write a product, this method is used by both POST and PUT action methods.
protected handleWriteProduct ( string $provider, Request $request, integer | null $id = null ) : FOS\RestBundle\View\View | FormInterface
$provider string A product provider name
$request Symfony\Component\HttpFoundation\Request Symfony request
$id integer | null A product identifier
Результат FOS\RestBundle\View\View | FormInterface
    protected function handleWriteProduct($provider, $request, $id = null)
    {
        $product = $id ? $this->getProduct($id) : null;
        try {
            $manager = $this->productPool->getManager($provider);
        } catch (\RuntimeException $e) {
            throw new NotFoundHttpException($e->getMessage(), $e);
        }
        $form = $this->formFactory->createNamed(null, 'sonata_product_api_form_product', $product, array('csrf_protection' => false, 'data_class' => $manager->getClass(), 'provider_name' => $provider));
        $form->bind($request);
        if ($form->isValid()) {
            $product = $form->getData();
            $product->setDescription($this->formatterPool->transform($product->getDescriptionFormatter(), $product->getRawDescription()));
            $product->setShortDescription($this->formatterPool->transform($product->getShortDescriptionFormatter(), $product->getRawShortDescription()));
            $manager->save($product);
            $view = \FOS\RestBundle\View\View::create($product);
            $serializationContext = SerializationContext::create();
            $serializationContext->setGroups(array('sonata_api_read'));
            $serializationContext->enableMaxDepthChecks();
            $view->setSerializationContext($serializationContext);
            return $view;
        }
        return $form;
    }