0

不久前,Ryan Weaver 在 Stack 上向我解释了如何通过将一种表单类型嵌入到另一种表单中来使用我的表单中的关系。为了防止重复,请花一点时间在这里阅读我最初的问题上下文: Symfony2 form where the data objects does not match what needs to be added

该表格在注册新机器时效果很好。用户输入一个监视器序列号,一切顺利。但是,当通过更改监视器序列号来编辑现有机器时(即用户已将他的监视器替换为另一个并通过给我新的序列号让我知道),会发生一些奇怪的事情。

机器正确链接到新监视器,这很好。但不知何故,以前的监视器发现它的序列号值被“新序列号”覆盖。就像用户正在编辑 Monitor 对象一样,这不是想法。

我想这发生在执行 '$form->bindRequest($this->getRequest());' 时,Machine 对象随后被刷新。但它应该只与新的监视器一起刷新,因为它是关系,而不是对旧监视器做任何事情。

有谁知道我可以做些什么来防止这种情况发生,或者我可能做错了什么?该代码是 Ryan 在链接帖子中告诉我的内容的精确复制品。

欢呼和感谢,

迪特

4

1 回答 1

1

基本上,你想调用 $em->refresh($originalMonitor); 当你知道你有一台新显示器时。这将重新加载原始监视器的数据,正如您推测的那样,在调用 bindRequest 时正在修改这些数据。

于 2012-04-14T16:56:14.290 回答