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 :
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]
L'injection de Doctrine se fait très bien, et je récupère l'objet dans mon constructeur :
Ldap.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
public function __construct($doctrine) {
    $this->doctrine = $doctrine;
}
Par contre l'erreur suivante apparaît sur mon formulaire de login :
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
Pourtant j'utilise le même principe que dans l'aure fichier, et si je soumet le formulaire je n'ai aucune erreur.
SikwanUserProvider.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
public function __construct($ldap) {
		$this->ldap = $ldap;		
	}
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).

Quelqu'un a une idée ?