Wie erhalte ich ein Objekt in Sonatas Admin-Klasse, wenn es von sonata_type_admin aufgerufen wird?

8

In der Bearbeitungsaktion von Sonata Admin versuche ich also verschiedene Formularfelder anzuzeigen, abhängig vom create oder Kontext .

Vielleicht etwas Hintergrund zuerst ..

Ich habe ein Gallery-Objekt und ein CoverPhoto-Objekt, die an OneToOne gebunden sind.

Galerie:

%Vor%

CoverImage:

%Vor%

Dies entspricht der GalleryAdmin -Klasse:

%Vor%

Und hier gehen wir mit CoverImageAdmin :

%Vor%

"Thumbnail" ist mein benutzerdefiniertes Formularfeld, das Miniaturansichten (Schocker) anzeigt. Aber jetzt möchte ich, dass dieses Feld nur im Kontext "Bearbeiten" erscheint.

Dies sollte ein Stück Kuchen sein mit

%Vor%

Methode der Admin Klasse und Bedingung. Leider, wenn ich getSubject () in der CoverImagesAdmin-Klasse aufrufen, die zum Rendern verschachtelter Form verwendet wird, gibt es immer null zurück. Das Gleiche gilt für getParent ();

Aufruf von getForm () führt zu

  

Fataler Fehler: Maximale Funktionsverschachtelungsebene von '500' erreicht, Abbruch! im   / home / flammeart / Projekte / KolberPhotography / Verkäufer / symfony / symfony / src / Symfony / Komponente   /OptionsResolver/Options.php in Zeile 350

Ich habe versucht, über jede Methode von Admin und FormMapper nur den Formkontext zu bestimmen, aber endete mit nichts.

Weißt du, wie man das auf eine saubere Art und Weise löst?

    
flameheart 21.11.2012, 18:32
quelle

2 Antworten

17

Ich habe es so geschafft:

%Vor%

Imo, diese Sonata-Sache braucht wirklich viel Dokumentation und Refactoring statt Weiterentwicklung.

    
flameheart 06.01.2013 12:58
quelle
6

Es ist eine alte Frage, ich weiß, aber der sauberste Weg, den ich gefunden habe, ist:

%Vor%

Wenn es wahr zurückgibt, ist es ein Bearbeitungsformular, wenn es falsch ist, ist es ein Erstellungsformular.

    
frak 13.02.2014 18:21
quelle