Php FOSRestBundle-修补程序无法正常工作
我想用“补丁”方法更新实体(仅更新已提交的字段) 表格: 我将“eng”的实体设置为Php FOSRestBundle-修补程序无法正常工作,php,symfony,fosrestbundle,Php,Symfony,Fosrestbundle,我想用“补丁”方法更新实体(仅更新已提交的字段) 表格: 我将“eng”的实体设置为TRUE。 如果我运行查询仅更新标题字段,eng将更改为false。和说明设置为空。知道为什么吗?我认为,因为您没有使用请求正文转换器,而是手动定义路由,所以需要设置表单的方法 试着这样做: $editForm = $this->createForm( 'ContentBundle\Form\ContentType', $content, ['method' => 'PATCH'
TRUE
。
如果我运行查询仅更新
标题
字段,eng
将更改为false
。和说明
设置为空。知道为什么吗?我认为,因为您没有使用请求正文转换器,而是手动定义路由,所以需要设置表单的方法
试着这样做:
$editForm = $this->createForm(
'ContentBundle\Form\ContentType',
$content,
['method' => 'PATCH']
);
我要让它工作
请记住,如果您想使用PATCH
方法,您需要在表单中使用TextType
而不是ChoiceType
:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', TextType::class)
->add('description', TextareaType::class)
->add('eng', TextType::class);
}
当有修补程序请求时,您需要将
false
作为第二个参数传递给Form::submit()
,以便不会清除缺少的属性。如果您碰巧使用修补程序将布尔值更新为false,则可能无法工作。有关更多详细信息和解决方案,请参见此问题:
$editForm = $this->createForm(
'ContentBundle\Form\ContentType',
$content,
['method' => 'PATCH']
);
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', TextType::class)
->add('description', TextareaType::class)
->add('eng', TextType::class);
}