在ajax调用期间,form-> bind($ request)输出一个数组

时间:2012-08-19 18:02:04

标签: symfony symfony-forms symfony-2.1

我发布了一个使用Ajax的表单。

在Ajax调用中绑定表单时,我有一个惊人的回应:

public function newCartAjaxAction(Request $request)
{
    $form = $this->container->get('new_cart_form.factory')->create();
    $formHandler = $this->container->get('new_cart_form.handler');

    if ('POST' === $request->getMethod())
    {
        $form->bind($request);

        if ($form->isValid())
        {
            $formHandler->processValidForm($form);

            $response = new Response();
            $response->headers->set('Content-type', 'application/json; charset=utf-8');
            $response->setContent(json_encode('hello'));
            return $response;
        }
        //...
    }

    //....
}

使用firebug,我惊讶地在ajax中获得3个输出响应:

array(2) {[0]=>int(3)[1]=>int(5)}    //unexpected response

int(3)                               //unexpected response

"hello"                              //The only response needed

调试后,我发现输出1和2来自$form->bind($request);

有谁知道为什么会这样?我很惊讶从表单绑定步骤获得响应,因为我应该发送的唯一响应是$ response ...

我做错了吗?

1 个答案:

答案 0 :(得分:1)

这些输出很可能是由您编写的代码引起的。

首先,通过重新安装确保您的供应商是干净的。 然后,它也可能是您编写的表单事件监听器/订阅者,因此也可以这样看。