我的项目有问题。 当我尝试从实体中删除一些数据时,我的问题就存在了。我的控制器是用Sesio生成器生成的。这是我的代码:
/**
* Deletes
* @Route("/{id}/delete", name="delete")
* @Method({"DELETE"})
*/
public function deleteAction(Request $request, Task $task) {
$form = $this->createDeleteForm($task);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->remove($task);
$em->flush();
$this->get('session')->getFlashBag()->add('notice_success', 'Success');
} else {
$this->get('session')->getFlashBag()->add('notice_error', 'NO DELETE');
}
return $this->redirectToRoute('task');
}
/**
* Creates a form to delete.
*/
private function createDeleteForm(Task $task) {
return $this->createFormBuilder()
->setAction($this->generateUrl('delete', array('id' => $task->getId())))
->add('submit', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, array('label' => 'Delete'))
->getForm()
;
}
我必须告诉你这个代码在DEV(app_dev.php)上工作得很好,但它在PROD版本中不起作用。
我尝试解决该问题,并尝试将表单方法更改为POST,并且它的工作属性为PROD和DEV。看起来DELETE方法在PROD版本中不起作用。
有人有类似的问题吗?
答案 0 :(得分:0)
如果您正在使用AppCache,内核将忽略为DELETE方法添加的_method
参数。
要在创建Request对象之前解决web/app.php
调用Request::enableHttpMethodParameterOverride();
中的问题:
...
$kernel = new AppCache($kernel);
Request::enableHttpMethodParameterOverride();// <-- add this line
$request = Request::createFromGlobals();
...
请参阅http://symfony.com/doc/current/form/action_method.html和http://symfony.com/doc/current/reference/configuration/framework.html#configuration-framework-http-method-override