如何使用Symfony2表单和REST修补集合?

如何使用Symfony2表单和REST修补集合?,rest,symfony,symfony-forms,Rest,Symfony,Symfony Forms,这是我的表单字段: $builder->add('settings', 'collection', array( 'type' => new UserSettingType(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false, )); 以下是我试图

这是我的表单字段:

        $builder->add('settings', 'collection', array(
            'type' => new UserSettingType(),
            'allow_add' => true,
            'allow_delete' => true,
            'by_reference' => false,
        ));
以下是我试图发送的数据:

{ 
    "user": {
        "settings": [
                {"name": "use_signature", "value": "yes"}
        ]
    }
}
以下是我目前拥有的数据:

{ 
    "user": {
        "settings": [
                {"name": "use_signature", "value": "no"},
                {"name": "signature", "value": "blah-blah-blah"}
        ]
    }
}
以下是我如何处理请求(控制器):

问题是,当我修补数据时,“签名”设置从“设置”集合中删除。但是,如果我对“用户”实体的任何直接字段执行相同的操作,则补丁请求会得到正确处理(只有请求中包含的字段会被更改,其他字段不会被删除或设置为null)

如果是OneToMany collection(即,我只想更改一个特定设置或其中一些设置,但不是全部设置),您是否知道如何处理此问题
删除=真

在一方!我还使用实体作为表单类型,使用
'multiple'=>true

这解决了我的问题!很不错的!,不知道如果孩子们自己也有孩子,并且发生了错误,会发生什么,我想在这一点上是一个处理500异常的问题。。
    $form = $this->createForm(new UserType(), $user);
    $form->submit($request, $request->getMethod() !== 'PATCH');

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->flush();

        $response = new Response();
        $response->setStatusCode(Response::HTTP_NO_CONTENT);

        return $response;
    }