/**
  * @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()];
 }
Exemplo n.º 2
0
 /**
  * Add picture
  *
  * @param \AppBundle\Entity\ProductPicture $picture
  *
  * @return Product
  */
 public function addPicture(ProductPicture $picture)
 {
     $picture->setProduct($this);
     $this->pictures[] = $picture;
     return $this;
 }