我在控制器中添加了一个带有路由注释和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中,只能使用POST
和GET
方法,有时也称为HTTP谓词。
由于您在form
中没有定义任何method="..."
,因此默认值为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表单方法
因此,您只需删除注释的methods
属性:
/**
* @Route("/etat/delete_emp_nbre_administrative/{id}", name="delete_emp_nbre_administrative")
*/
请注意,在制作RESTful服务时,会使用DELETE
方法或谓词以及PUT
和PATCH
。