symfony 2中的REST表单验证 - 如何测试帖子

use*_*254 5 validation rest symfony

表单永远不会有效,但$form->getErrors()不会出错.由于它将使用DEV HTTP客户端进行REST API测试

测试数据是

标题: Content-Type:application/json

身体: {"username":"sad","password":"123","email":"asdsads@fgfdg.com"}

我没有任何validation.yml文件

有没有任何方法可以找出出错的方法(错误信息)?

public function postUserAction(Request $request)
{

    return $this->processForm(new User(),$request);
}

private function processForm(User $user, Request $request )
{


    $form = $this->createForm(new UserType(), $user);
    $form->handleRequest($request);

    if ($form->isValid()) {

         return array('form' => 'valid');
    }

    return \FOS\RestBundle\View\View::create($form->getErrors(),400);
}
Run Code Online (Sandbox Code Playgroud)

use*_*254 3

经过一些调试后: isValid() 检查表单的几项内容,例如表单是否已提交。不是,所以我改为

...
        $form = $this->createForm(new UserType(), $user);
        //$form->handleRequest($request);
        $form->submit($request);

        if ($form->isValid()) {
...
Run Code Online (Sandbox Code Playgroud)

现在它有效了。

  • 如果您将一些选项添加到可选的第三个参数中以使用方法 createForm,例如 array("method" => "POST"),您也许仍然可以使用handleRequest()。这是我能够使用handleRequest() 提交表单的唯一方法。我付出了额外的努力来让handleRequest()工作,因为从symfony 2.3开始不推荐使用以$request作为参数调用的submit(),并且显然将在3.0中消失。 (2认同)