public function editAction(FormInterface $form, ProductInterface $product, VariantInterface $variant, $isValid)
{
if ($isValid) {
$firstImage = $variant->getSortedImages()->first();
if ($firstImage instanceof ImageInterface) {
$variant->setPrincipalImage($firstImage);
}
/**
* @var VariantInterface $entity
*/
$variant->setProduct($product);
/**
* @var ValueInterface $option
*/
foreach ($variant->getOptions() as $option) {
/**
* When adding an option to a Variant it is
* important to check that the parent Product
* has its corresponding Attribute
*/
$optionAttribute = $option->getAttribute();
if (!$product->getAttributes()->contains($optionAttribute)) {
$product->addAttribute($optionAttribute);
}
}
$this->flush($variant);
$this->flush($product);
$this->addFlash('success', 'admin.variant.saved');
return $this->redirectToRoute('admin_product_edit', ['id' => $product->getId()]);
}
return ['product' => $product, 'variant' => $variant, 'form' => $form->createView()];
}