Method Not Allowed (Allow: DELETE)

Par DebrowTher, il y a 5 ans


Bonjour,

J'ai un probleme d'erreure 405 qui me dis que la methode "DELETE" doit etre utilisée a la place de "GET" pourtant j'ai bien utilisée la méthode "DELETE"
J'ai suivi la création du site d'agence immobilière et je tombe sur cette erreure.

Ce que je fais

--------------------Voici mon code--------------------
Mon controller:

<?php namespace App\Controller\Admin; use App\Entity\Picture; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * @Route("/admin/picture") */ class AdminPictureController extends AbstractController{ /** * @Route("/delete-picture/{id}", name="admin.picture.delete", methods="DELETE") * @param Picture $picture * @param Request $request * @return JsonResponse */ public function delete(Picture $picture, Request $request) { $data = json_decode($request->getContent(), true); if ($this->isCsrfTokenValid('delete' . $picture->getId(), $data['_token'])) { $em = $this->getDoctrine()->getManager(); $em->remove($picture); $em->flush(); return new JsonResponse(['success' => 1]); } return new JsonResponse(['error' => 'Token invalide'], 400); } }

Mon app.js:

document.querySelectorAll('[data-delete]').forEach(a => { a.addEventListener('click', e => { e.preventDefault() fetch(a.getAttribute('href'), { method: 'DELETE', headers: { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json' }, body: JSON.stringify({'_token': a.dataset.token}) }).then(response => response.json()) .then(data => { if (data.success) { a.parentNode.parentNode.removeChild(a.parentNode) } else { alert(data.error) } }) .catch(e => alert(e)) }) })

Aidez-moi svp j'arrive pas à faire disparaitre cette erreure pourtant j'ai bien recopié le code(normalement)

Merci a vous

1 réponse

Elyanor, il y a 5 ans

Hello,

Ton annotation semble incorrecte si tu regarde bien la doc :

@Route("/delete-picture/{id}", name="admin.picture.delete", methods={"DELETE"})