如何解决此错误 找不到"GET /etat/delete_emp_nbre_administrative/101"的路由:方法不允许(允许:删除)?



我在控制器中添加了一个带有路由注释和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")
*/

您定义路由的方式将只接受通过HTTP的DELETE方法进行访问
HTML中,只能使用POSTGET方法,有时也称为HTTP谓词。

由于您在form中没有定义任何method="...",因此默认值为GET

methodformmethod内容属性是具有以下关键字和状态的枚举属性:

  • 关键字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表单方法

因此,您只需删除注释的methods属性:

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

请注意,在制作RESTful服务时,会使用DELETE方法或谓词以及PUTPATCH

最新更新