Symfony2在Prod和Dev版本中形成不同的方法

时间:2016-11-07 20:00:08

标签: php forms symfony

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

有人有类似的问题吗?

1 个答案:

答案 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.htmlhttp://symfony.com/doc/current/reference/configuration/framework.html#configuration-framework-http-method-override