Sonata\BasketBundle\Controller\Api\BasketController::handleWriteBasketElement PHP Метод

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

Write a basket element, this method is used by both POST and PUT action methods.
protected handleWriteBasketElement ( integer $basketId, Request $request, integer $elementId = null ) : FOS\RestBundle\View\View | Symfony\Component\Form\FormInterface
$basketId integer A Sonata ecommerce basket identifier
$request Symfony\Component\HttpFoundation\Request A Symfony Request service
$elementId integer A Sonata ecommerce basket element identifier
Результат FOS\RestBundle\View\View | Symfony\Component\Form\FormInterface
    protected function handleWriteBasketElement($basketId, $request, $elementId = null)
    {
        $basket = $this->getBasket($basketId);
        $this->basketBuilder->build($basket);
        $productId = $request->request->get('productId');
        $product = $this->getProduct($productId);
        $productPool = $basket->getProductPool();
        $code = $productPool->getProductCode($product);
        $productDefinition = $productPool->getProduct($code);
        $basketElement = $elementId ? $this->getBasketElement($elementId) : $this->basketElementManager->create();
        $basketElement->setProductDefinition($productDefinition);
        $form = $this->formFactory->createNamed(null, 'sonata_basket_api_form_basket_element', $basketElement, array('csrf_protection' => false));
        $form->bind($request);
        if ($form->isValid()) {
            $basketElement = $form->getData();
            if ($elementId) {
                $this->basketElementManager->save($basketElement);
            } else {
                $basket->addBasketElement($basketElement);
                $this->basketManager->save($basket);
            }
            $view = \FOS\RestBundle\View\View::create($basket);
            $serializationContext = SerializationContext::create();
            $serializationContext->setGroups(array('sonata_api_read'));
            $serializationContext->enableMaxDepthChecks();
            $view->setSerializationContext($serializationContext);
            return $view;
        }
        return $form;
    }