Pi *_* Wi 2 php rest symfony fosrestbundle
我正在Symfony2中使用FOSRestBundle构建REST API.我正在使用表单来创建和更新Doctrine2实体.如果我发送所有表单字段,一切正常.例:
{"first_name":"Pi","last_name":"Wi"}
Run Code Online (Sandbox Code Playgroud)
该人插入正常,但现在我只想更新姓氏.
{"last_name":"Wi"}
Run Code Online (Sandbox Code Playgroud)
问题是更新后第一个名称为空,因为表单使用"null"值更新实体(因为没有给出).是否可以只更新姓氏并忽略名字?
当然,这是可能的.
首先,就RESTful而言,这将是一个PATCH请求,因此如果您使用的是ClassResourceInterface基于控制器的方法,则必须patchAction在控制器中添加一个方法.
然后,在处理提交的表单时,您需要false $clearMissing在控制器中将选项传递给表单的提交方法调用,如下所示:
<?php
// in your controller's patchAction:
/** @var \Symfony\Component\Form\FormInterface $form */
/** @var \Symfony\Component\HttpFoundation\Request $request */
$form->submit($request, false);
Run Code Online (Sandbox Code Playgroud)
这将告诉表单组件仅更新从表单传递的字段,而不清除缺少的字段(如参数的名称所示).请参阅源代码以供参考.
但请注意,从Symfony 3.0开始,将不推荐将方法传递Request给FormInterface::submit()方法,所以这个答案适用于Symfony 2.x.
| 归档时间: |
|
| 查看次数: |
3062 次 |
| 最近记录: |