Symfony2 form - Wie "verstecktes Feld" Referenz parent-Objekt
Ich bin neu in Symfony-Formulare und versuche herauszufinden, wie man ein Formular mit einem versteckten Feld, das auf das übergeordnete Objekt. Ich habe zum Beispiel eine Liste, die über eine viele-zu-eins-Beziehung mit Kontakte. Wenn Sie einen neuen Kontakt erstellen, muss er ein hidden Feld mit der id der Liste, zu dem der Kontakt Hinzugefügt wird.
Derzeit bin ich versuchen, so Betten Sie ein Formular namens ListIdType
in meinem ContactType
form. Der einzige Bereich, in den ListIdType
form ist die id der Liste. Dies funktioniert gut, weil ich kann die Liste auf eine leere Entität Kontakt und es wird automatisch füllen Sie ein element in das Formular mit dem Namen contact[list][id]
(definiert in den ListIdType
form). Das problem mit diesem ist, dass wenn ich das Formular Absenden, bekomme ich eine Fehlermeldung, dass weder das element "id" oder methed "setId()" existiert in der Liste Klasse.
Meine aber das Gefühl, dass ich was falsch mache, aber ich finde keine Dokumentation zu zeigen mich in die richtige Richtung.
- Ich habe github.com/symfony/symfony/pull/1951. Ist das die einzige Lösung es gibt? Es scheint mir, dass es eine native Symfony Weg, dies zu tun.
- Den richtigen Umgang mit "Daten-Transformatoren", siehe symfony.com/doc/current/cookbook/form/data_transformers.html
- Wenn wir Glück haben ist der HiddenEntityType ist, wird es in Symfony bald: github.com/symfony/symfony/issues/8293
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung, die ich kam mit, um ein hidden-Feld mit der
property_path
optionFALSE
. Hier ist der code inContactType::buildForm
:Ich dann übernehmen Sie das Feld in meinem controller.
Funktioniert es, aber nicht das Gefühl, die beste Lösung für mich. Ich bin immer noch offen, wenn jemand vorschlagen kann, einen besseren Weg!
Vor kurzem habe ich gefunden Gregwar s Forum bundle, das fügt entity_id form geben. Es übernimmt automatisch die meisten der benötigten Transformationen und könnte genau das sein, was Sie brauchen.
https://github.com/Gregwar/FormBundle