My first symfony2 project is a list of guests (invited in an event) stored in a database. I have
and finally a "createGuest" method in the Controller and everything works fine.
I can't manage to remove a guest from the database. I have read every tutorial in the web, including the official Symfony2 book; all that it says is :
Deleting an Object
Deleting an object is very similar, but requires a call to the remove() method of the entity manager:
$em->remove($product); $em->flush();
It does not say anything more than that (even the "Update an object" section is missing documentation) on how to connect the controller deleteAction($id) with the twig template. What I want to do is to list all guests with a viewGuests action and a viewGuests twig template, having a delete icon next to every row, which you should click to delete an entry. Simple, but I cannot find any documentation and do not know where to start from.
public function deleteGuestAction($id) { $em = $this->getDoctrine()->getEntityManager(); $guest = $em->getRepository('GuestBundle:Guest')->find($id); if (!$guest) { throw $this->createNotFoundException('No guest found for id '.$id); } $em->remove($guest); $em->flush(); return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig')); }
Symfony provides all the tools you need to use databases in your applications thanks to Doctrine, the best set of PHP libraries to work with databases. These tools support relational databases like MySQL and PostgreSQL and also NoSQL databases like MongoDB.
Symfony is smart and knows how to make the find()
by itself :
public function deleteGuestAction(Guest $guest) { if (!$guest) { throw $this->createNotFoundException('No guest found'); } $em = $this->getDoctrine()->getEntityManager(); $em->remove($guest); $em->flush(); return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig')); }
To send the id in your controller, use {{ path('your_route', {'id': guest.id}) }}
DELETE FROM ... WHERE id=...;
protected function templateRemove($id){ $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('XXXBundle:Templates')->findOneBy(array('id' => $id)); if ($entity != null){ $em->remove($entity); $em->flush(); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With