2012-04-14 6 views
0

Vor einiger Zeit erklärte mir Ryan Weaver auf Stack, wie Sie Beziehungen in meinen Formularen verwenden, indem Sie einen Formulartyp in einen anderen einbetten. Um Doppelarbeit zu vermeiden, nehmen Sie bitte die kleine Menge an Zeit, um meinen anfänglichen Problem Kontext hier zu lesen: Symfony2 form where the data objects doesn't match exactly what needs to be filled inFestlegen einer verwandten Entität für ein Objekt beim Bearbeiten Überschreibt die zuvor verknüpfte Entität

Das Formular funktioniert gut, wenn eine neue Maschine zu registrieren. Der Benutzer gibt eine Monitor-Seriennummer ein und die Dinge funktionieren großartig. Wenn Sie jedoch einen vorhandenen Computer bearbeiten, indem Sie die Seriennummer des Monitors ändern (d. H. Der Benutzer hat seinen Monitor durch einen anderen ersetzt und informiert mich, indem er mir die neue Seriennummer gibt), passiert etwas Seltsames.

Die Maschine wird korrekt mit dem neuen Monitor verbunden, das ist gut. Aber irgendwie findet der vorherige Monitor heraus, dass sein Seriennummernwert mit der 'neuen Seriennummer' überschrieben wird. Wie wenn der Benutzer das Monitor-Objekt bearbeitet, was nicht die Idee ist.

Ich vermute, das passiert, wenn '$ form-> bindRequest ($ this-> getRequest());', wo das Machine-Objekt danach geleert wird. Aber es sollte nur mit dem neuen Monitor geleert werden, da es Beziehung ist, nichts mit dem alten tun.

Weiß jemand, was ich tun kann, um dies zu verhindern, oder was ich wahrscheinlich falsch mache? Der Code ist eine exakte Replik von dem, was Ryan mir in dem verlinkten Post gesagt hat.

Beifall und Dank,

Dieter

Antwort

1

Im Grunde wollen Sie $ Ausführungs> Refresh ($ originalMonitor) nennen; wenn du weißt, dass du einen neuen Monitor hast. Dadurch werden die Daten des ursprünglichen Monitors erneut geladen, was, wie Sie vermuten, beim Aufruf von bindRequest geändert wird.

+0

Das klingt genau wie, was ich brauche. Habe nicht bemerkt, dass es sogar ein refresh() Event gab. Tbh, selbst wenn ich es google, scheint es nirgends dokumentiert zu sein. Ich werde es diese Woche irgendwo ausprobieren und werde antworten/als Antwort markieren, wenn ich eine Bestätigung habe. Vielen Dank! – Dieter

+0

Funktioniert wie ein Fracking-Charme :-), vielen Dank! – Dieter

Verwandte Themen