Symfony2 Form Builder Wählen Sie Across Join Tabelle mit Metadaten

8

Ich habe 3 Entitäten:

%Vor%

Dies funktioniert gut, soweit das Abrufen von Ergebnissen aus der Datenbank erfolgt, aber ich kann den Form Builder nicht dazu bringen, ein korrektes Formularsteuerelement zu erstellen.

Ich möchte eine Liste aller Kategorien mit Kontrollkästchen, die auf die Kategorien überprüft werden, die vom Mitglied verwendet werden. Schließlich möchte ich das Prioritätsfeld hinzufügen.

Mitglied

%Vor%

Kategorie

%Vor%

Mitgliedskategorie

%Vor%

Offensichtliche Versuche mit dem Formular-Generator, die nicht funktionieren.

Wenn ich verwende:

%Vor%

Ich erhalte eine Auswahl mit allen Kategorien, aber keiner von denen, die in MemberCategory für dieses Mitglied ausgewählt wurden.

Wenn ich verwende:

%Vor%

Ich erhalte alle ausgewählten Kategorien für alle Benutzer.

Kennt jemand, wie man das zum Laufen bringt, ist dies ein naheliegendes Muster in relationalen Daten und wäre einfach mit SQL und PHP.

Gibt es in Symfony 2.3 und Doctrine eine direkte Lösung?

    
Peter Wooster 29.07.2013, 15:56
quelle

3 Antworten

3

So habe ich dieses Problem in der Vergangenheit gelöst (auf Ihr Beispiel angewendet), aber das habe ich herausgefunden, sodass es für Ihren Fall vielleicht nicht 100% ig ist.

Erstellen Sie zuerst einen MemberCategory Formulartyp, der Ihren Anforderungen entspricht:

%Vor%

Fügen Sie diesen Formulartyp anschließend in das Formular Member ein:

%Vor%

Dann können Sie der Dokumentation folgen, um Ihren Mitgliedern beliebig viele Kategorien hinzuzufügen und jedes Mal eine Priorität zuweisen.

    
cheesemacfly 29.07.2013 16:48
quelle
1

Sie müssen den QueryBuilder in Ihrem Formular verwenden

%Vor%

Siehe Dokumentation für die ordnungsgemäße Verwendung. siehe symfony2 formularabfragebuilder mit Parametern für ein Beispiel

    
Pierrito 29.07.2013 16:46
quelle
0

Die Post von Cheesecmfly ist nicht so schlecht, aber es ist Anruf eingebettet Form und kann kompliziert sein, zu verwalten. In der Tat müssen Sie nur ein "Custom Repositories" erstellen   Ссылка

Es wird eine neue Methode zum "Ergreifen" Ihres ORM-Objekts mit Doctrine2 wie find () oder findBy ();

hinzugefügt

1) Erstellen Sie ein neues Repository in einem Repository-Ordner Ihres Bundles

%Vor%

}

2) Ihr Cutom-Repository wurde an Ihre Entität angehängt

%Vor%

3) Fügen Sie Ihrer Form-Klasse einen Konstruktor hinzu und übergeben Sie den Entity Manager und die für Ihre Abfrage erforderliche Variable:

%Vor%

4) In Ihrem Controller erstellen Sie Ihr Formular so:

%Vor%

Fühlen Sie sich frei, mir Fragen zu stellen, ich hoffe, das ist, was Sie suchen;)

    
Luna 29.07.2013 17:35
quelle