/** * @param $id * @param Product $product * @param Request $request * @Route("/pictures/product/{id}", name="admin_product_pictures", * requirements={ * "id": "\d+" * }) * @ParamConverter("product", class="AppBundle:Product") * @Template("AppBundle:admin/products/form:pictures.html.twig") * @return array|\Symfony\Component\HttpFoundation\RedirectResponse */ public function indexAction($id, Product $product, Request $request) { $formPicture = $this->createFormBuilder($product)->setAction($this->generateUrl('admin_product_pictures', ['id' => $id]))->setMethod('POST')->add('pictures', CollectionType::class, array('entry_type' => PictureIsMainType::class, 'label' => false))->add('file', FileType::class, array('attr' => array('placeholder' => 'Picture'), 'label' => false, 'mapped' => false))->add('update', SubmitType::class, array('label' => 'Update', 'attr' => ['class' => 'btn btn-default']))->add('upload', SubmitType::class, array('label' => 'Upload', 'attr' => ['class' => 'btn btn-default']))->getForm(); $formDelete = $this->createForm(FormType::class, null, ['method' => Request::METHOD_POST])->add('delete', SubmitType::class, ['label' => 'delete', 'attr' => ['class' => 'btn btn-danger']]); if ($request->getMethod() == 'POST') { $formPicture->handleRequest($request); if ($formPicture->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($product); if ($formPicture->get('upload')->isClicked()) { $file = $formPicture->get('file')->getData(); if ($file) { $picture = new ProductPicture(); $picture->setProduct($product)->setFile($file); $em->persist($picture); $this->addFlash('success', 'Picture added successfully.'); } } else { $this->addFlash('success', 'Product changed successfully.'); } $em->flush(); $this->addFlash('tab', 'pictures'); return $this->redirectToRoute('admin_product_edit', ['action' => 'edit', 'id' => $id]); } } return ['pictures' => $product->getPictures(), 'isMain' => $formPicture->createView(), 'delete' => $formDelete->createView()]; }
/** * Add picture * * @param \AppBundle\Entity\ProductPicture $picture * * @return Product */ public function addPicture(ProductPicture $picture) { $picture->setProduct($this); $this->pictures[] = $picture; return $this; }