很久以前,Ryan Weaver在Stack上向我解释了如何通过将一种formtype嵌入到另一种形式中来在我的表单中使用关系。 为了防止重复,请花一点时间在这里阅读我的初始问题上下文: Symfony2 form where the data objects doesn't match exactly what needs to be filled in
注册新机器时表单很有用。用户输入一个Monitor序列号,事情很顺利。但是,当通过更改Monitor serialnumber来编辑现有机器时(即用户已经用另一个替换了他的Monitor并通过给我新的序列号让我知道),会发生一些奇怪的事情。
机器正确链接到新显示器,所以这很好。但不知何故,以前的Monitor发现它的序列号值被'new serialnumber'覆盖了。就像用户正在编辑Monitor对象一样,这不是主意。
我认为在执行'$ form-> bindRequest($ this-> getRequest());'时会发生这种情况,之后Machine对象会被刷新。但它只应该与新的Monitor一起刷新它的关系,而不是对旧的那个做任何事情。
有谁知道我能做些什么来防止这种情况,或者我可能做错了什么? 该代码完全复制了Ryan在链接帖子中告诉我的内容。
干杯谢谢,
迪特
答案 0 :(得分:1)
基本上,你想要调用$ em-> refresh($ originalMonitor);当你知道你有一个新的显示器。这将重新加载原始监视器的数据,正如您所推测的那样,在调用bindRequest时正在修改该数据。