souci deleteAction avec le CRUD généré
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:
Code:
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()
;
} |
Ensuite, ma route delete:
Code:
1 2 3 4 5
|
admin_category_delete:
pattern: /{id}/delete
defaults: { _controller: "MelUserBundle:Admin/Category:delete" }
requirements: { _method: post|delete } |
Et enfin ma suppression dans la vue:
Code:
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> |
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.
Lorsque je tente une suppression, voici le message d'erreur:
Citation:
No route found for "GET /admin/category/6/delete": Method Not Allowed (Allow: POST, DELETE)
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.
Si quelqu'un pouvait m'éclairer, cela serait aimable.
Bien à vous