Symfony2: Wie filtern Sie die Optionen eines Entity-Choice-Formularfelds nach einem bestimmten Attribut?

8

1.) Die Situation (vereinfacht)

Ich habe zwei Entitäten: eine Container-Entity, die genau 1 Content-Entity hat. Die content_id wird in der Container-Entität gespeichert.

2.) Soft-Delete Content-Entities

Ich habe eine Funktion zum Löschen von Inhaltselementen implementiert, also habe ich ein "deleted" -Attribut zur Inhaltseinheit hinzugefügt. Alles funktioniert gut.

3.) Das Problem

Wenn ich jetzt eine neue Container-Entität erstellen möchte, zeigen die automatisch generierten Auswahlmöglichkeiten ALLE Inhalts-Entitäten an - auch diejenigen, die ich als "gelöscht" markiert habe (delete-attribute = 1).

4.) Die Frage

Wo ist der richtige Ort, um einen "Filter" / eine "Abfrage" hinzuzufügen, um nur die Elemente anzuzeigen, die nicht als gelöscht markiert sind? (löschen! = 1)

5.) Was ich versucht habe

a.) view / twig approach: Ich habe versucht, das Rendering von {{form_widget (form.contentId)}} ohne Erfolg zu ändern

b.) Controller-Ansatz: Ich habe versucht, die Formulardaten in newAction zu manipulieren, wo das Formular erstellt wird ($ form = $ this- & gt; createCreateForm) ($ entity)) ohne Erfolg

c.) type / buildForm Ansatz: Ich habe versucht, die buildForm () - Methode erneut zu ändern, kein Erfolg

Es wäre GROSS, wenn Sie mir einen Hinweis und / oder einen kurzen Code geben könnten, wo ich in die Aktion eingreifen könnte, um die weichen gelöschten Auswahlen zu entfernen.

Vielen Dank im Voraus!

    
squirrel 18.05.2014, 12:03
quelle

1 Antwort

19

Sie suchen nach query_builder Option des Entity-Feldes.

Sie können eine benutzerdefinierte Abfrage erstellen, die die Ergebnismenge dort filtert.

Beispiel:

%Vor%

Sie könnten einen allgemeineren Ansatz wählen, bei dem alle Select-Anweisungen mit Doktrinfiltern gefiltert werden auch.

    
nifr 18.05.2014, 13:59
quelle