PUT表单不会在Symfony 2中更新

时间:2015-01-25 20:38:13

标签: php symfony

我有一个PUT方法

的表单
{{ form(formEdit, {'action': path('user_update',{'id':user.id}), 'method': 'PUT'}) }}

我的行动是

/**
     * Edits an existing User entity.
     *
     * @Route("/{id}", name="user_update")
     * @Method("PUT")
     * @Template("foo:User:update.html.twig")
     * @ParamConverter("User", class="foo:User")
     */
    public function updateAction(Request $request,User $user){
        $form = $this->createForm(new UserType(), $user);
        $form->handleRequest($request);
        if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $em->persist($user);
            $em->flush();

            return $this->redirect($this->generateUrl('user',array('id' => $user->getId())));
        }


        return array(
            'formEdit' => $form->createView(),
            'user' => $user
        );
    }

My Twig

{{ form(formEdit, {'action': path('user_update',{'id':user.id}),'method':'PUT'}) }}

当我提交表单时,我没有任何错误。 如果我用POST更改PUT,则表单有效。 我试过

    echo $request->getMethod();
    echo $form->getErrorsAsString();

这是我的输出

PUT
name: No errors surname: No errors email: No errors gender: 0: No errors 1: No errors submit: No errors name: No errors surname: No errors email: No errors gender: 0: No errors 1: No errors submit: No errors

但我不明白我怎么能抓住这个错误。我正在使用Symfony 2.3

1 个答案:

答案 0 :(得分:2)

表单只能处理POST和GET请求。您可以看到here为什么没有将PUT和DELETE添加为表单方法。

您只能通过AJAX调用发送PUT请求。