Sonata\ProductBundle\Model\BaseProductProvider::createVariation PHP Method

createVariation() public method

public createVariation ( Sonata\Component\Product\ProductInterface $product, $copyDependencies = true )
$product Sonata\Component\Product\ProductInterface
    public function createVariation(ProductInterface $product, $copyDependencies = true)
    {
        if ($product->isVariation()) {
            throw new \RuntimeException('Cannot create a variation from a variation product');
        }
        $variation = clone $product;
        $variation->setParent($product);
        $variation->setId(null);
        $variation->setVariations(new ArrayCollection());
        $variation->setDeliveries(new ArrayCollection());
        $variation->setProductCategories(new ArrayCollection());
        $variation->setProductCollections(new ArrayCollection());
        $variation->setPackages(new ArrayCollection());
        $product->addVariation($variation);
        $variationCollection = new ArrayCollection(array($variation));
        $this->synchronizeVariationsProduct($product, $variationCollection);
        if ($copyDependencies) {
            $this->synchronizeVariationsDeliveries($product, $variationCollection);
            $this->synchronizeVariationsPackages($product, $variationCollection);
            $this->synchronizeVariationsCategories($product, $variationCollection);
            $this->synchronizeVariationsCollections($product, $variationCollection);
        }
        $variation->setEnabled(false);
        $variation->setName(sprintf('%s (duplicated)', $product->getName()));
        $variation->setSku(sprintf('%s_DUPLICATE', $product->getSku()));
        return $variation;
    }