Bonjour,
pour chacune de mes entités j'utilise une classe manager. exemple:
Profile et ProfileManager. Le manager me permet d'utiliser les ACLs et aussi de procéder à diverses vérifications.
J'ai aussi une classe Address avec AddressManager. Address et Profile sont tous les deux reliés à mon User par une relation 1-1.
Le problème survient lors de l'utilisation de Form embarqués. Dans mon controller j'ai le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
$profile = $this->get('mybundle.manager.profile')->getProfileByUser($user);
$this->createForm(new ProfileWithAddressFormType(),$profile);
Pour afficher l'adresse correspondante au profil, symfony va donc chercher une méthode 'getAddress' dans mon Entité Profile. Il faut donc que cette méthode fasse appel au manager, c'est à dire que mon Entité Profile contienne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public function getAddress()
{
    $addressManager = $this->getContainer('mybundle.manager.address');
 
    return $addressManager->getAddressFromProfile($this);
}
Ce qui m'oblige à injecter le container dans mon Entité et ceci n'est vraiment pas une bonne idée. Je peux le faire lors de l'instanciation d'un objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
new Profile($this->container)
mais cela ne marchera pas lors d'une hydratation...
Si je n'utilise pas le manager j'aurai donc des failles de sécurité.

Une idée pour utiliser un manager plutôt qu'une entité dans un formulaire ?

Merci