Symfony2表单方法在Prod和Dev版本中有所不同


Symfony2 form methods diffrent in Prod and Dev version

我的项目有问题。当我试图从实体中删除一些数据时,我的问题就存在了。我的控制器是用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版本中不起作用。

有人有类似的问题吗?

如果使用AppCache,内核将忽略为DELETE方法添加的_method参数。

要解决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-框架http方法覆盖