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


Hello,

Ton annotation semble incorrecte si tu regarde bien la doc :

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