【发布时间】:2018-03-01 18:04:32
【问题描述】:
基本上这段代码打印为真:
/**
* Deletes myentity.
*
* @Route("/{id}", name="myentity_delete")
* @Method("DELETE")
*/
public function deleteAction(Request $request, MyEntity $entity) {
$form = $this->createDeleteForm($entity);
$form->handleRequest($request);
var_dump($form->isSubmitted());
die;
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->remove($invitation);
$em->flush();
}
return $this->redirectToRoute('homepage');
}
/**
* Creates a form to delete a myentity.
*
* @param MyEntity $entity The entity
* @return Form The form
*/
private function createDeleteForm(MyEntity $entity) {
return $this->createFormBuilder($entity)
->setMethod('DELETE')
->getForm();
}
但如果我更改 createDeleteForm() 方法以禁用 CSRF 保护,它会打印 false(isSubmitted() return false):
private function createDeleteForm(MyEntity $entity) {
return $this->createFormBuilder($entity, array('csrf_protection' => false))
->setMethod('DELETE')
->getForm();
}
我需要这样做,因为我想发送一封电子邮件,其中嵌入了删除表单。
编辑 1: 即使表单显示在网站上,它仍然不起作用,因此错误与电子邮件无关。
【问题讨论】:
-
邮件中的删除表单?为什么简单地放一个链接到删除页面?
-
是的,我知道我想我会这样做,但我真的不明白为什么仅仅通过禁用 CSRF 保护它就不起作用。感谢您的帮助
标签: php symfony csrf symfony-3.3