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

时间:2012-03-30 04:23:51

标签: php symfony

我正在尝试使用symfony2来创建Web服务。我希望Web服务能够构建并倾听:

使用参数key1 = value和key2 = value2

POST到/ teams / list

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

有没有办法将表单配置为不使用团队[*]?

2 个答案:

答案 0 :(得分:6)

如果您使用 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());

答案 1 :(得分:2)

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

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