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