gpt4 book ai didi

php - Symfony2 REST API - 部分更新

转载 作者:行者123 更新时间:2023-12-01 18:16:10 25 4
gpt4 key购买 nike

我正在 Symfony2 中使用 FOSRestBundle 构建 REST API。我正在使用 Doctrine2 表单来创建和更新实体。如果我发送所有表单字段,一切都会正常。示例:

{"first_name":"Pi","last_name":"Wi"}

该人已正确插入,但现在我只想更新姓氏。

{"last_name":"Wi"}

问题是更新后名字为空,因为表单使用“null”值更新实体(因为未给出)。是否可以只更新姓氏并忽略名字?

最佳答案

当然,这是可能的。

首先,就 RESTful 而言,这将是一个 PATCH 请求,因此如果您使用 the ClassResourceInterface based controller approach ,您必须在 Controller 中添加 patchAction 方法。

然后,在处理提交的表单时,您需要将 false $clearMissing 选项传递给 Controller ​​中表单的提交方法调用,如下所示:

<?php
// in your controller's patchAction:

/** @var \Symfony\Component\Form\FormInterface $form */
/** @var \Symfony\Component\HttpFoundation\Request $request */

$form->submit($request, false);

这将告诉表单组件仅更新从表单传递的字段,而不清除丢失的字段(如参数名称所示)。请参阅source code供引用。

但请注意,从 Symfony 3.0 开始,将不再推荐将 Request 传递给 FormInterface::submit() 方法,因此此答案适用于 Symfony 2.x .

关于php - Symfony2 REST API - 部分更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com