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, [
            'csrf_protection' => false,
        ]);

        $form->handleRequest($request);

        if ($form->isValid()) {
            $basketElement = $form->getData();

            if ($elementId) {
                $this->basketElementManager->save($basketElement);
            } else {
                $basket->addBasketElement($basketElement);
                $this->basketManager->save($basket);
            }

            $context = new Context();
            $context->setGroups(['sonata_api_read']);

            // simplify when dropping FOSRest < 2.1
            if (method_exists($context, 'enableMaxDepth')) {
                $context->enableMaxDepth();
            } else {
                $context->setMaxDepth(10);
            }

            $view = FOSRestView::create($basket);
            $view->setContext($context);

            return $view;
        }

        return $form;
    }
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, [
            'csrf_protection' => false,
        ]);

        $form->handleRequest($request);

        if ($form->isValid()) {
            $basketElement = $form->getData();

            if ($elementId) {
                $this->basketElementManager->save($basketElement);
            } else {
                $basket->addBasketElement($basketElement);
                $this->basketManager->save($basket);
            }

            $context = new Context();
            $context->setGroups(['sonata_api_read']);

            // simplify when dropping FOSRest < 2.1
            if (method_exists($context, 'enableMaxDepth')) {
                $context->enableMaxDepth();
            } else {
                $context->setMaxDepth(10);
            }

            $view = FOSRestView::create($basket);
            $view->setContext($context);

            return $view;
        }

        return $form;
    }
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 , [ 'csrf_protection' => false , ] ) ; $ form -> handleRequest ( $ request ) ; if ( $ form -> isValid ( ) ) { $ basketElement = $ form -> getData ( ) ; if ( $ elementId ) { $ this -> basketElementManager -> save ( $ basketElement ) ; } else { $ basket -> addBasketElement ( $ basketElement ) ; $ this -> basketManager -> save ( $ basket ) ; } $ context = new Context ( ) ; $ context -> setGroups ( [ 'sonata_api_read' ] ) ; // simplify when dropping FOSRest < 2.1 if ( method_exists ( $ context , 'enableMaxDepth' ) ) { $ context -> enableMaxDepth ( ) ; } else { $ context -> setMaxDepth ( 10 ) ; } $ view = FOSRestView :: create ( $ basket ) ; $ view -> setContext ( $ context ) ; return $ view ; } return $ form ; }
Write a basket element, this method is used by both POST and PUT action methods.

@param int     $basketId  A Sonata ecommerce basket identifier
@param Request $request   A Symfony Request service
@param int     $elementId A Sonata ecommerce basket element identifier

@return \FOS\RestBundle\View\View|FormInterface
Write a basket element this method is used by both POST and PUT action methods .