Bonjour,
j'ai commencé à utiliser les ACL, mais j'ai un problème avec les fixtures. Lorsque je charge les fixtures de doctrine, je dois aussi charger les ACL/ACE correspondants.
1ere solution:
-je charge d'abord les fixtures-puis j'installe les ACE par une commande comme dans:Code:php app/console doctrine:fixtures:load
https://github.com/FriendsOfSymfony/...cesCommand.php
Ca marche mais c'est pas top, il m'arrive souvent de recharger les fixtures et donc j'oublie souvent de réinstaller les ACL/ACE..:mrgreen:
2ème solution
Je modifie ma fonction load($manager) dans ma classe Fixtures pour installer les ACL/ACE correspondants.
Ca m'a l'air la solution de facilité seulement elle marche pas chez moi. Il faut charger à chaque fois l'utilisateur, pour chaque objet que l'on enregistre. Mon code:
Sauf qu'ensuite les ACE ne marchent pas.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 class ProfileFixtures extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface { private $container; public function setContainer(ContainerInterface $container = null) { $this->container = $container; } public function load($manager) { $profileManager = $this->container->get('myapp_individual.manager.profile'); $individual = $this->getReference('individual-1'); $token = new UsernamePasswordToken($individual, null, 'main'); $this->container->get('security.context')->setToken($token); $profile1 = $profileManager->createProfile($individual); $profile1->setLastName('Benz'); $profile1->setFirstName('John'); $profile1->setPath('john.jpg'); $profileManager->setProfile($profile1,false); .....
Après un peu de recherche j'ai trouvé la source du problème, c'est lequi ne donne pas le même résultat dans les fixtures :Code:UserSecurityIdentity::fromAccount
"Proxies\MyAppUserBundleEntityIndividualProxy-john@email.com" et sur le site directement:
"MyApp\UserBundle\Entity\Individual-john@email.com"
(source Ma base de données)
Donc si vous avez des avis à donner sur les 2 solutions? Qu'utilisez vous ?
Et surtout si vous savez comment faire marcher la 2ème solution??
Merci