Sonata\ProductBundle\Controller\BaseProductController::variationToProductAction PHP Method

variationToProductAction() public method

public variationToProductAction ( Sonata\Component\Product\ProductInterface $product, Sonata\Component\Product\ProductInterface $variation = null ) : Symfony\Component\HttpFoundation\JsonResponse | RedirectResponse
$product Sonata\Component\Product\ProductInterface
$variation Sonata\Component\Product\ProductInterface
return Symfony\Component\HttpFoundation\JsonResponse | Symfony\Component\HttpFoundation\RedirectResponse
    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);
    }