Bonjour à tous !
Depuis quelques jours déjà j'essaye de créer mon propre UserProvider pour voir comment ça marche, je me suis heurté au problème apparemment courant de ne pas savoir utiliser Doctrine en dehors des contrôleurs.
J'ai donc du passer par un service container en lui injectant doctrine, jusque là aucun problèmes ma classe se lance bien et l'objet doctrine est récupéré sans problèmes.
J'ai donc créé un deuxième service, sensé instancier le premier et l'utiliser. En gros mon UserProvider est un service à qui j'injecte mon service LDAP, lui même disposant de doctrine.
Voici mon services.yml :
L'injection de Doctrine se fait très bien, et je récupère l'objet dans mon constructeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 services: sikwan_provider: class: Sikwan\SikwanSecurityBundle\Security\User\SikwanUserProvider arguments: [@sikwan_ldap] sikwan_ldap: class: Sikwan\SikwanSecurityBundle\Security\Ldap\Ldap arguments: [@doctrine.orm.entity_manager]
Ldap.php
Par contre l'erreur suivante apparaît sur mon formulaire de login :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public function __construct($doctrine) { $this->doctrine = $doctrine; }
Pourtant j'utilise le même principe que dans l'aure fichier, et si je soumet le formulaire je n'ai aucune erreur.Catchable Fatal Error: Argument 1 passed to Sikwan\SikwanSecurityBundle\Security\Ldap\Ldap::__construct() must be an instance of Doctrine, none given, called in /var/www/testLdap/src/Sikwan/SikwanSecurityBundle/Security/User/SikwanUserProvider.php on line 14 and defined in /var/www/testLdap/src/Sikwan/SikwanSecurityBundle/Security/Ldap/Ldap.php line 7
SikwanUserProvider.php
J'en conclu que mes services fonctionnent, mais que ma page de login fait l'appel sans doctrine (alors que cette page seule ne nécessite pas que les services soient actifs).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public function __construct($ldap) { $this->ldap = $ldap; }
Quelqu'un a une idée ?
Partager