Как устранить эту ошибку Не найден маршрут для "GET / etat / delete_emp_nbre_administrative / 101": метод запрещен (разрешить: DELETE)? - PullRequest
1 голос
/ 13 июля 2020

Я добавляю функцию в свой контроллер с аннотацией маршрута и methods="DELETE".

Когда я создаю форму в Twig с кнопкой удаления, я получаю эту ошибку

Не найден маршрут для «GET / etat / delete_emp_nbre_administrative / 101»: метод не разрешен (разрешить: DELETE)

в шаблоне

<form action="{{path('delete_emp_nbre_administrative', {'id' : NbreAdministrative.id })}}">
  <input type="hidden" name="_method" value="DELETE">
  <button class="btn btn-danger" >supprimer</button>
</form>

в контроллере

/**
 * @Route("/etat/delete_emp_nbre_administrative/{id}", name="delete_emp_nbre_administrative", methods="DELETE")
 */

1 Ответ

1 голос
/ 13 июля 2020

Способ, которым вы определили свой маршрут, допускает доступ только через метод DELETE HTTP. В HTML вы можете использовать только методы POST и GET, также иногда называемые HTTP-глаголами.

И поскольку вы не определили никаких method="..." в своем form, по умолчанию GET.

Атрибуты содержимого method и formmethod - это перечисляемые атрибуты со следующими ключевыми словами и состояниями:

  • Ключевое слово get, сопоставление с состоянием GET , указывающее метод HTTP GET.
  • Ключевое слово post, отображение в состояние POST , указывающее метод HTTP POST.
  • Ключевое слово dialog, отображение в состояние диалог , указывает, что отправка <form> предназначена для закрытия поля dialog, в котором находится форма, если таковая имеется, и в противном случае не может быть отправлена.

недопустимое значение по умолчанию для этих атрибутов - состояние GET . Отсутствующее значение по умолчанию для атрибута method также является состоянием GET . (Отсутствует значение по умолчанию для атрибута formmethod.)

Метод элемента является одним из таких состояний. Если элемент имеет тип Submit Button и имеет атрибут formmethod, тогда метод элемента является состоянием этого атрибута; в противном случае это состояние атрибута формы method.

Источник: https://www.w3.org/TR/html52/sec-forms.html#element -attrdef-form-method

Таким образом, вы исправляете только удаление атрибута methods вашей аннотации:

/**
 * @Route("/etat/delete_emp_nbre_administrative/{id}", name="delete_emp_nbre_administrative")
 */

Обратите внимание, что метод или глагол DELETE вместе с PUT и PATCH используются при создании служб RESTful.

...