Bonjour à toutes et tous,
Je rencontre un petit souci avec le CRUD généré par Symfony, et plus particulièrement en ce qui concerne le delete.
Voici la partie concernée par le delete de mon controller:
Ensuite, ma route delete:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public function deleteAction(Request $request, $id) { $form = $this->createDeleteForm($id); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('MeBlogBundle:Category')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find Category entity.'); } $em->remove($entity); $em->flush(); } return $this->redirect($this->generateUrl('admin_category')); } /** * Creates a form to delete a Category entity by id. * * @param mixed $id The entity id * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm($id) { return $this->createFormBuilder() ->setAction($this->generateUrl('admin_category_delete', array('id' => $id))) ->setMethod('get') ->add('submit', 'submit', array('label' => 'Delete')) ->getForm() ; }
Et enfin ma suppression dans la vue:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 admin_category_delete: pattern: /{id}/delete defaults: { _controller: "MelUserBundle:Admin/Category:delete" } requirements: { _method: post|delete }
Je précise que ce bouton de suppression n'est pas dans un <form> puisque le design m'impose la chose autrement (c'est pour un admin): j'ai un tableau qui reprend les infos de mon entité, et une colonne avec l'action supprimer sur un lien comme vous pouvez le voir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <a href="{{ path('admin_category_delete', { 'id': entity.id }) }}" title="Supprimer"> <img src="{{ asset('bundles/Meadmin/img/icons/cross.png') }}" alt="Supprimer" /> </a>
Lorsque je tente une suppression, voici le message d'erreur:
Je comprends bien qu'il y a un soucis dans la méthode, j'ai par ailleurs essayé de modifier cela dans ma route, et de mettre "get" dans requirements: quand je fais cela, je n'ai plus de message d'erreur, tout semble bien se passer mais la suppression ne se fait pas dans ma base de données.No route found for "GET /admin/category/6/delete": Method Not Allowed (Allow: POST, DELETE)
Si quelqu'un pouvait m'éclairer, cela serait aimable.
Bien à vous
Partager