如何接受 Symfony 表单中的单个默认字段?

How to accept a single, default field in a Symfony form?

在 FOSRestBundle 的帮助下,我有一个用 Symfony3 编写的 REST API。

它使用 Symfony 形式 类 进行数据输入(POST、PATCH、PUT 操作),这对几乎所有端点都非常有效。

但是我有一个子端点,它使用具有单个 collectionType 的表单来设置关系。 POST 请求正文如下所示:

curl http://localhost/documents/100/related -d @- <<REQUEST_BODY
{
  "related": [
    {"id": 14},
    {"id": 23}
  ]
}
REQUEST_BODY

但是我想省略 "related" 字段名称,因为此信息已经在 URI 中并且在这里似乎是多余的。我想调整表格以接受这样的数据:

curl http://localhost/documents/100/related -d @- <<REQUEST_BODY
[
    {"id": 14},
    {"id": 23}
]
REQUEST_BODY

但是看不出如何使 Symfony 表单以这种方式运行?

澄清一下,我想接受一个表单字段,而不必在 JSON 请求中指定该字段的名称。

前段时间我遇到了类似的问题。对我有用的是使用 表单工厂 创建一个带有空名称的 命名表单 ,就像这样(例如在典型的控制器中):

/** @var $formFactory FormFactory */
$formFactory = $this->get('form.factory');

$form = $formFactory->createNamed('', $type, $data, $options);

请注意,这样配置的表单将消耗所有POST(或GET)数据。因此,如果您不能确保只显示所需的数据,您可能需要使用 allow_extra_fields