Php symfony2:表单数据签名

Php symfony2:表单数据签名,php,forms,symfony,symfony-forms,Php,Forms,Symfony,Symfony Forms,我正在将现有的RESTAPI重写为Symfony2。当然,我不想更改客户端的接口 之前,我们发布数据以创建如下用户资源: { "name":"myName", "email":"myEmail" } 在Symfony2.3中,我使用$form->handleRequest($request)将请求传递给表单。对于要提交的表格,主体签名必须包括表格类型名称,如下所示: { "user" : { "name":"myName", "email

我正在将现有的RESTAPI重写为Symfony2。当然,我不想更改客户端的接口

之前,我们发布数据以创建如下用户资源:

{
    "name":"myName",
    "email":"myEmail"
}
在Symfony2.3中,我使用$form->handleRequest($request)将请求传递给表单。对于要提交的表格,主体签名必须包括表格类型名称,如下所示:

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

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

好吧,还有一个人试图在REST中使用表单

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


因此,由于您正在使用REST而不是HTML表单,请停止为作业使用错误的工具。相反,使用这样的序列化程序必须与Symfony集成。通过直接使用相应的服务,您可以在不使用Symfony表单的情况下执行验证和其他操作。

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

$form = $this->formFactory->createNamed(null, 'user', $user);

好吧,我第一次用Symfony。使用表单进行验证在我看来是错误的,但人们告诉我这是最佳实践。狠狠地打那些人一巴掌。至少对我来说是这样我会试试你的建议。ps:其他声称知道()的人只使用表单进行验证。无论如何,我已经在使用JMSSerializerBundle将资源导出为json。我也可以用它来导入它们。您是否建议直接从控制器中调用验证程序服务?thanksI不同意@ElnurAbdurrakhimov表单组件应仅用于绑定HTML表单中的数据。(我删除了我的建议,因为埃尔努尔的建议更相关)