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;
}