Symfony2 und Doctrine2: füllen Sie das Formular mit zwei Entitäten (ein kompliziertes Szenario)

9

Ich habe 5 Entitäten:

  • Benutzer,
  • Person,
  • UserAffiliation,
  • PersonAffiliation und
  • Zugehörigkeit

Hier ist das Schema:

Einige Details:

  • Ein WebUser ist eine Person, die auf der Website registriert ist. Für jeden Webbenutzer gibt es eine Personen-ID.

  • Eine Person kann ein Webbenutzer, ein Autor usw. sein.

  • Jeder Webbenutzer hat 0 oder mehr Zugehörigkeiten. Diese Zugehörigkeiten wurden von diesem WebUser erstellt und in den fähigen UserAffiliations verlinkt.

  • Der Webbenutzer kann auch die von ihm erstellten Mitgliedschaften mit einer Person verknüpfen (wenn die Person ein Autor ist), und die Entität PersonAffiliation wird ausgefüllt.

Ich versuche jetzt, dem Webuser die Möglichkeit zu geben, einem Autor (Person) eine Zugehörigkeit zuzuweisen. Dafür habe ich:

  • In der Person Person

    %Vor%
  • In der PersonAffiliation

    %Vor%
  • Im Entitätsbenutzer:

    %Vor%
  • In der Entity UserAffiliation

    %Vor%

Im Formular mache ich das nächste:

%Vor%

Aber all das funktioniert nicht richtig, wie ich es möchte.

Erklärung : Wenn ich versuche, eine neue Zugehörigkeit hinzuzufügen, wird sie nur für den Webbenutzer hinzugefügt und ich kann sie nicht über das Formular mit dem Autor (Person) verknüpfen.

Haben Sie eine Idee, wie Sie das lösen können, oder vielleicht ein gutes Tutorial?

    
Miloš 13.11.2012, 15:34
quelle

2 Antworten

2

Dies sollte in der Entity1Controller.php behandelt werden:

%Vor%

Sie müssen möglicherweise auch die Kaskadierung in Ihren Zuordnungszuordnungen festlegen. Entity1.yml:

%Vor%

In der Theorie wird symfony entity2 unter die Haube bringen, was die zweite Klausel if null überflüssig macht, aber das stört mich immer, deshalb bevorzuge ich es explizit.

    
Lighthart 16.11.2012, 19:28
quelle
2

Nun, wenn dieses Formular die Auflistung an eine WebUser-Entität bindet, weil Sie an die Formularerstellung im Controller ein Objekt einer solchen Klasse übergeben, bedeutet dies:

%Vor%

oder Sie delegieren die Entscheidung, welche Klasse für Symfony Forms verwendet werden soll, indem Sie die DefaultOptions nicht festlegen und explizit die data_class angeben, an die sie gebunden werden muss:

%Vor%     
nass600 16.11.2012 21:24
quelle