From 54486d008c687173467286b576e67c2f6e43dd40 Mon Sep 17 00:00:00 2001 From: Jannis Portmann Date: Sun, 9 May 2021 17:23:02 +0200 Subject: [PATCH] Implement basic editing of offer --- src/Controller/OfferController.php | 37 +++++++++++++++++++++++++++++- templates/offer/edit.html.twig | 19 +++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 templates/offer/edit.html.twig diff --git a/src/Controller/OfferController.php b/src/Controller/OfferController.php index fec0c56..b6a7c0c 100644 --- a/src/Controller/OfferController.php +++ b/src/Controller/OfferController.php @@ -28,7 +28,7 @@ class OfferController extends AbstractController #[Route('/offers', name: 'offers')] public function index(Environment $twig, OfferingRepository $offerRepository): Response { - return new Response($twig->render('app/index.html.twig', [ + return new Response($twig->render('offer/index.html.twig', [ 'offers' => $offerRepository->findAll(), ])); } @@ -80,4 +80,39 @@ class OfferController extends AbstractController 'wishes' => $wishRepository->findByUser($offer->getByUser()), ]); } + + #[Route('/offer/edit/{id}', name: 'edit_offer')] + public function editOffer(Offering $offer, OfferingRepository $offerRepository, Request $request, string $photoDir): Response + { + $form = $this->createForm(OfferingFormType::class, $offer); + $user = $this->getUser(); + + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $offer->setByUser($user); + $offer->setCreatedAt(new \DateTime()); + + if ($photo = $form['photo']->getData()) { + $filename = bin2hex(random_bytes(6)).'.'.$photo->guessExtension(); + try { + $photo->move($photoDir, $filename); + } catch (FileException $e) { + // unable to upload the photo, give up + $this->addFlash("error", "There was an error uploading the photo: ".$e); + return $this->redirectToRoute('new_offer'); + } + $offer->setPhotoFilename($filename); + } + + $this->entityManager->persist($offer); + $this->entityManager->flush(); + } + + return $this->render('offer/edit.html.twig', [ + 'user' => $this->getUser(), + 'offer' => $offer, + 'offer_form' => $form->createView(), + ]); + } } diff --git a/templates/offer/edit.html.twig b/templates/offer/edit.html.twig new file mode 100644 index 0000000..eee20eb --- /dev/null +++ b/templates/offer/edit.html.twig @@ -0,0 +1,19 @@ +{% extends 'base.html.twig' %} + +{% block body %} + {% for message in app.flashes('error') %} + + {% endfor %} + +

Add new offer

+ {{ form_start(offer_form) }} + {{ form_row(offer_form.title) }} + {{ form_row(offer_form.zipCode) }} + {{ form_row(offer_form.description) }} + {{ form_row(offer_form.photo, { + label: 'Choose file' + }) }} + {{ form_end(offer_form) }} +{% endblock %} \ No newline at end of file