public function variationToProductAction(ProductInterface $product, ProductInterface $variation = null)
{
$provider = $this->get('sonata.product.pool')->getProvider($product);
if (!$provider->hasEnabledVariations($product)) {
throw new NotFoundHttpException('invalid product instance (no variations)');
}
if (null === $variation || 0 === $provider->getStockAvailable($variation)) {
if ($this->getRequest()->isXmlHttpRequest()) {
return new JsonResponse(array('error' => $this->get('translator')->trans('variation_not_found', array(), 'SonataProductBundle')));
}
$this->get('session')->getFlashBag()->add('sonata_product_error', 'variation_not_found');
// Go to master product
$variation = $product;
}
$url = $this->generateUrl('sonata_product_view', array('productId' => $variation->getId(), 'slug' => $variation->getSlug()));
if ($this->getRequest()->isXmlHttpRequest()) {
return new JsonResponse(array('variation_url' => $url));
}
return $this->redirect($url);
}