从symfony2的post字段中删除表单名称


removing the form name from post field in symfony2

我正在尝试使用symfony2创建一个web服务。我希望网络服务是结构化的,并听取:

POST到/teams/list,参数为key1=value和key2=value2

出于验证目的,我创建了一个TeamForm对象和一个TeamFormModel来验证数据(使用注释)。我遇到的问题是表单正在寻找团队[key1]和团队[key2],而不仅仅是key1和key2来绑定到TeamFormModel。

是否有方法将表单配置为不使用团队[*]?

如果您使用2.1分支,您可以简单地创建一个空名称的表单。

$form = $this->get('form.factory')->createNamed(
    '',             // the name
    new TeamType(), // the type
    $team           // the data
);
$form->bindRequest($request);

所以它会如你所期望的那样工作。

但是,如果您使用2.0分支,据我所知,它不受支持,您必须手动进行绑定:

$form = $this->createForm(new TeamType(), $team);
$from->bind($request->request->all());

您可以在不创建表单的情况下验证实体。您可以从POST数据创建实体对象并将其传递给验证器。请参阅食谱的验证部分。

如果您不喜欢每次都从请求参数创建实体对象,那么您可以以json或xml格式发布数据,然后使用JMSSerializerBundle将数据反序列化为实体对象。