Forms Can';我无法使我的表格有效

Forms Can';我无法使我的表格有效,forms,rest,symfony,fosrestbundle,Forms,Rest,Symfony,Fosrestbundle,我想用Symfony服务器(使用FOSRestBundle)创建一个ReST基础设施。 有 联系人(id、姓名、电子邮件) a添加类型表单以添加新联系人 在客户端,我有一个表单,它发送一个POST请求,其主体是 {“我的联系人表格的姓名”:{“姓名”:“foo”,“电子邮件”:foo@example.org“}} 我的控制器(扩展了FOSRestController)可以看到请求中的数据 $request->request->get($form->getName())返回{“name”:“f

我想用Symfony服务器(使用FOSRestBundle)创建一个ReST基础设施。 有

  • 联系人(id、姓名、电子邮件)
  • a添加类型表单以添加新联系人
在客户端,我有一个表单,它发送一个POST请求,其主体是

{“我的联系人表格的姓名”:{“姓名”:“foo”,“电子邮件”:foo@example.org“}}

我的控制器(扩展了FOSRestController)可以看到请求中的数据

$request->request->get($form->getName())返回{“name”:“foo”,“email”:foo@example.org“}

但是无论我使用$form->handleRequest($request)还是$form->submit($data)

$form->isValid()始终为false


我希望这足够清楚。。。有人能帮忙吗?

这个问题与CRSF验证有关。您必须为请求服务的用户禁用它。您可以在config.yml中禁用它。您必须设置如下内容:

fos_rest:
    disable_csrf_role: ROLE_API
只需确保请求您的服务的用户具有此角色。您可以阅读有关用户角色的更多信息。 此外,你必须提交表格,而不是处理它。以下是其中的一个片段:

    $form = $this->createForm(ProjectType::class, $project);
    $form->submit($request->request->all());

    if ($form->isValid()) {

$form->getErrors()返回什么?可能缺少CSRF令牌?(以前从未使用过FOSRestBundle,但如果使用基本Symfony表单,这可能是它失败的原因之一)。