2012-04-12 7 views
0

Ich habe ein Problem mit dem Einbetten von Formularen in Symfony2. Ich könnte etwas technisch falsch machen, aber vielleicht ist der Fehler, den ich gemacht habe, auf der Ebene des db-Setups und das Einbetten eines Formulars ist in erster Linie nicht notwendig. Konzentrieren wir uns zuerst darauf, bevor ich den Code vorstelle.Verwenden eines eingebetteten Formulars in Symfony2

Ich habe zwei Entitäten gemacht: V und O. Beide repräsentieren Standorte, beziehen sich aber auf verschiedene Arten von Standorten. Durch Ref-IDs beziehen sie sich jeweils auf eine Entitätsadresse. Mehrere V könnten sich auf die gleiche Adresse beziehen, mehrere O könnten sich auf die gleiche Adresse beziehen, und es könnte sogar ein V und ein O an derselben Adresse geben. Anzeige von V's, O's und Adressen funktioniert (die Controller und das Routing arbeiten). Das Erstellen oder Bearbeiten von Adressen funktioniert auch einwandfrei. Ich habe einen Formulartyp namens AddressType erstellt, der auch rendert und funktioniert.

V und O haben auch formTypes: VType und OType. Sie haben ihre Twig-Vorlagen, Routen, Controller-Aktionen usw. an ihrem Platz.

Jetzt möchte ich Benutzer in der Lage sein, ein neues V in einem Formular einzugeben, wo auch Felder verfügbar sind, um eine neue Adresse einzugeben. Also möchte ich nicht, dass Benutzer eine bereits existierende Adresse aus einer Liste irgendeiner Art auswählen (aber ich habe das funktioniert), aber ich möchte, dass sie eine neue Adresse hinzufügen können. Sollte die Adresse in der db-Tabelle "Addresses" schon existieren (was sehr gut möglich ist), sollte Symfony2 auf diese existierende Adresse verweisen, anstatt dieselbe zu erzeugen.

Jetzt ist mein Problem, dass es mir nicht gelingt, das Adressformular (AddressType) zu präsentieren, das in den V- oder O-Formularen eingebettet ist. Grundsätzlich möchte ich, dass das AddressType-Formular als Teil eines V- oder O-Formulars gerendert wird. Ist das möglich?

Es könnte jedoch sehr gut sein, dass mein db-setup nicht in Ordnung ist und ich Address nicht zu einer separaten Entität (und einer db-Tabelle) hätte machen sollen, aber ich hätte es zu den Entitäten V und O machen sollen würde auch das Problem lösen, denke ich, aber ist es eine gute Übung?

Ich schätze Ihre Hilfe im Voraus.

+0

Beginnen wir mit den Grundlagen. Bitte aktualisiere deine Frage und poste die Relationen (Yml oder Annotationen) zwischen Adresse, V und O. Dadurch wird klar, welche Art von Beziehungen du verwendest. – Cerad

Antwort

0

Ich hatte ähnliches Problem. Dies ist eine komplizierte Form, die nicht so leicht zu machen ist. Der beste Weg ist, ein benutzerdefiniertes Formular OR oder sogar eine rohe Form zu machen (was ich bevorzugen würde), und Controller-Aktion zu schreiben, die dieses Formular für Sie mit der Request-Klasse direkt verarbeitet. Dann können Sie Ihre Eingaben mit ConstraintCollections validieren und Ihre Entitäten direkt mit Ihren Klassen und Doctrines EntityManager verfassen.

Dieser Link kann nützlich bekommen - oder zumindest hat mir geholfen, eine Menge über die Validierung von nicht-Objekte: http://www.ricardclau.com/2011/11/how-to-use-symfony2-validator-component-without-forms-entities-and-data-arrays/

Also im Grunde müssen Sie Code hier schreiben.

+0

Vielen Dank Петър, definitiv ein sehr interessanter Artikel, den Sie zur Verfügung gestellt haben. Seltsam, dass dies in Symfony2 so kompliziert ist, scheint eine ziemlich häufige Nachfrage für jede db zu sein. Vielen Dank für Ihre Antwort. –

Verwandte Themen