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:
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:
1
2
3 $profile = $this->get('mybundle.manager.profile')->getProfileByUser($user); $this->createForm(new ProfileWithAddressFormType(),$profile);
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 objetCode:
1
2
3
4
5
6
7 public function getAddress() { $addressManager = $this->getContainer('mybundle.manager.address'); return $addressManager->getAddressFromProfile($this); }
mais cela ne marchera pas lors d'une hydratation...Code:new Profile($this->container)
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