Elcodi\Admin\ProductBundle\Controller\VariantController::editAction PHP Метод

editAction() публичный Метод

Edit and Saves product
public editAction ( Symfony\Component\Form\FormInterface $form, Elcodi\Component\Product\Entity\Interfaces\ProductInterface $product, Elcodi\Component\Product\Entity\Interfaces\VariantInterface $variant, boolean $isValid ) : RedirectResponse
$form Symfony\Component\Form\FormInterface Form
$product Elcodi\Component\Product\Entity\Interfaces\ProductInterface Product
$variant Elcodi\Component\Product\Entity\Interfaces\VariantInterface Variant
$isValid boolean Is valid
Результат Symfony\Component\HttpFoundation\RedirectResponse Redirect response
    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()];
    }