1

我正在将现有的 rest api 重写为 Symfony2。当然我不想改变客户端的接口。

之前我们发布了数据来创建这样的用户资源:

{
    "name":"myName",
    "email":"myEmail"
}

在 Symfony2.3 中,我使用 $form->handleRequest($request) 将请求传递给表单。对于要提交的表单,正文的签名必须包含表单类型名称,如:

{
    "user" : {
        "name":"myName",
        "email":"myEmail"
    }
}

有没有一种简单的方法可以保留以前的签名,并且仍然使用 Symfony 表单?

4

2 回答 2

2

好吧,还有一个人尝试使用带有 REST 的表单...

问题在于 Symfony 表单的目的是将数据从HTML 表单绑定到模型对象或数组。其他一切——例如验证——不是由 Symfony 表单完成的,而是由validator. 为了您的方便,Symfony 表单只是委托给这些服务。

因此,既然您正在使用 REST 而不是使用 HTML 表单,请停止使用错误的工具来完成这项工作。相反,使用像这样的序列化器,它具有JMSSerializerBundle与 Symfony 集成。通过直接使用相应的服务,您可以在不使用 Symfony 表单的情况下进行验证和其他工作。

于 2013-09-17T11:21:47.397 回答
0

您可以使用空名称创建命名表单:

$form = $this->formFactory->createNamed(null, 'user', $user);
于 2013-10-15T11:10:00.420 回答