在提交表格Symfony 3之后丢失了之前的实体数据

时间:2017-09-25 14:13:55

标签: forms symfony symfony-forms

以下是我的控制器编辑操作的一部分。方法是PUT

 public function editRentalAction(Request $request, Rental $rental): JsonResponse
 {
    $rentalManager = $this->get('rental.rental_manager');

    $form = $this->createForm(RentalType::class, $rental);
    $form->submit(json_decode($request->getContent(), true));

当我尝试从请求中提交一些实体数据(我想要更新的数据)时,所有其他实体数据都会丢失(设置为null)。我怎么能只更改我发送的这个参数?

请求有效负载:

{"example_parameter": "example"}

2 个答案:

答案 0 :(得分:1)

PUT将取消空属性。

最佳解决方案:使用PATCH代替PUT

替代方案:使用PUT发送整个对象(不仅是更新的属性)。

答案 1 :(得分:0)

解决方案在submit()false设置第二个参数,并将方法更改为PATCH

以下是说明:http://symfony.com/doc/current/form/direct_submit.html#form-call-submit-directly