Setting the default value of a Symfony FormType nested in CollectionType

Tim Bernhard

PHP

Dieser Beitrag ist etwas älter. Meinungen, Daten und Codes könnten veraltet sein.

Helfen Sie mit, allfällige Fehler zu korrigieren: GitHub

Es gibt einige Möglichkeiten, einen Standardwert zu hacken, um Felder zu bilden. Das Problem wird größer, wenn CollectionType behandelt wird, da die zugrunde liegenden Objekte nicht automatisch erstellt werden. Es gibt zahlreiche Problemumgehungen, z. Setzen Sie einfach prototype_data für denCollectionType auf ein instanziiertes Objekt. Leider hat für mich bei der Arbeit mit nested CollectionTypes keines davon funktioniert.

Die einzige Möglichkeit für mich war das Hinzufügen eines DataTransformers, der in der Funktion reverseTransform prüft, ob das zu transformierende Objekt is_null, und setzen Sie es stattdessen auf eine neue Instanz. Die Standardwerte werden dann im Konstruktor des zugrunde liegenden Objekts oder auch in der reverseTransform-Funktion festgelegt, je nach Ihren (Leistungs-) Anforderungen.

Ich hoffe, dass dies eines Tages verbessert wird, aber im Moment ist diese Problemumgehung sehr verständlich, sodass ich nicht daran denken würde, ein Problem oder eine Pull-Anfrage einzureichen oder sogar zu fragen, warum dies notwendig ist. Auf diese Weise habe ich noch mehr Kontrolle über die neuen Objekte.

Webmentions

Keine Kommentare vorhanden für diese Seite.