Php 使用表单编辑实体零件

Php 使用表单编辑实体零件,php,forms,symfony,Php,Forms,Symfony,我有一个实体(大约20/25个字段),我想用表单编辑它 我只想编辑(和显示)几个表单字段 问题是,所有显示的字段都会正确更新,但默认情况下,未呈现的字段会使用“null”值进行更新 我的控制器: $em = $this->getDoctrine()->getManager(); $LaboRequest= $em->getRepository('MyBundle:LaboRequest')->find($id); $form = $this->createForm

我有一个实体(大约20/25个字段),我想用表单编辑它

我只想编辑(和显示)几个表单字段

问题是,所有显示的字段都会正确更新,但默认情况下,未呈现的字段会使用“null”值进行更新

我的控制器:

$em = $this->getDoctrine()->getManager();

$LaboRequest= $em->getRepository('MyBundle:LaboRequest')->find($id);
$form = $this->createForm('MyBundle\Form\LaboRequestType', $LaboRequest);

if ($request->isMethod('POST') && $form->handleRequest($request)->isSubmitted() && $form->isValid()) {

    $em->persist($LaboRequest);
    $em->flush();

    return $this->redirectToRoute(...);
}

return $this->render('...', array(
            'LaboRequest' => $LaboRequest,
            'form' => $form->createView(),
        ));
我在视图中只渲染少数字段,因此我可以理解,默认情况下,symfony对未渲染的字段使用“null”


但是有没有一种方法可以编辑实体的一部分而不影响具有“null”值的实体的数据?

我不确定您是否可以这样做。 但是您可以扩展原始表单并调用

$builder->remove('xxx')

对于要删除的每个字段

是否有包含所有字段的表单,但只渲染其中的一部分?如果是这种情况,尝试使用不同的形式或可能的副本