Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 05-02-2013 14:50:18

michwii
Membre
Date d'inscription: 25-01-2013
Messages: 13

[Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Bonjour à tous,

J'ai un petit soucis avec la création d'un entity manager dans doctrine 2.

Je m'explique j'ai une classe qui s'appelle MyAuthenticationProcess. Cette classe implémente AdapterInterface.
Jusqu'ici tout va bien big_smile.

Cette classe me permet de vérifier qu'une authentification c'est bien déroulé.
Pour le moment il n'y a pas encore de connexion à une base de donnée et j'aimerai maintenant la rajouter.

En suivant les tutos sur internet j'ai compris qu'il fallait que je fasse 4 modifications :
Créer une classe User dans (authentification/Entity) :

Code:

/**
 * A User table.
 *
 * @ORM\Entity
 * @ORM\Table(name="user")
 * @property string $login
 * @property string $password
 * @property int $id
 */

class User {
    
    /**
     * @ORM\Id
     * @ORM\Column(type="integer");
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @ORM\Column(type="string")
     */
    protected $login;
    
    /**
     * @ORM\Column(type="string")
     */
    protected $password;
    
    
    /**
     * Magic getter to expose protected properties.
     *
     * @param string $property
     * @return mixed
     */
    public function __get($property)
    {
        return $this->$property;
    }
    
    /**
     * Magic setter to save protected properties.
     *
     * @param string $property
     * @param mixed $value
     */
    public function __set($property, $value)
    {
        $this->$property = $value;
    }
    
    
}

Ajouter au fichier config/autoload/local.php les informations pour la connexion à la base de donnée.

Code:

'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host' => 'localhost',
                    'port' => '3306',
                    'user' => 'root',
                    'password' => '',
                    'dbname' => 'zf2tutorial',
                )
            )
        )
    ),

Puis rajouter dans mon fichier Authentification/config/module.config.php

Code:

'doctrine' => array(
        'driver' => array(
                __NAMESPACE__. '_driver' => array(
                        'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                        'cache' => 'array',
                        'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
                ),
                'orm_default' => array(
                    'drivers' => array(
                        __NAMESPACE__.'\Entity' => __NAMESPACE__.'_driver'        
                    )        
                )    
        )        
    ),

Rajouter les deux modules (préalablement téléchargé grâce a composer) dans le fichier config/application.config.php

Code:

return array(
    'modules' => array(
         //...........
        'DoctrineModule',
        'DoctrineORMModule',
         //............
));

En ajoutant c'est 4 étapes mon projet ce lance parfaitement.

Maintenant là où ça coince c'est quand j'essaye dans ma classe MyAuthenticationProcess d'acceder à la base de donnée via l'entity Manager.

J'obtiens cette erreur :

Code:

Call to undefined method Authentification\MyAuthenticationProcess::getServiceLocator() in Authentification\MyAuthenticationProcess.php</b> on line <b>29</b>

Voici le code de ma classe MyAuthenticationProcess

Code:

<?php

namespace Authentification;

use Zend\Authentication\Adapter\AdapterInterface;
use Zend\Authentication\Result ;
use Doctrine\ORM\EntityManager;
use Authentification\User;

class MyAuthenticationProcess implements AdapterInterface
{
    protected $_username;
    protected $_password;
    protected $sm ;
    
    /**
     * @var Doctrine\ORM\EntityManager
     */
    protected $em;
    
    public function setEntityManager(EntityManager $em)
    {
        $this->em = $em;
    }
    
    public function getEntityManager()
    {
        if (null === $this->em) {
            $this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
        }
        return $this->em;
    }
    

    /**
     * Sets username and password for authentication
     *
     * @return void
     */
    public function __construct($username, $password)
    {
        $this->_username = $username ;
        $this->_password = $password ;
    }

    /**
     * Performs an authentication attempt
     *
     * @return \Zend\Authentication\Result
     * @throws \Zend\Authentication\Adapter\Exception\ExceptionInterface
     *               If authentication cannot be performed
     */
    public function authenticate()
    {
        /**
         * @ToDo
         * Implementer la connection avec la base de donnée à ce niveau là...
         * 
         * */
        $user = $this->getEntityManager()->find('Authentification\Entity\User', 1);
        
        
        $code = Result::FAILURE ;
        $identity = "unknow" ;
        $messages = array(
            "message" => "Mauvaise combinaison de login/password",        
        ) ;
        
        if($this->_username == $user->getLogin() && $this->_password == $user->getPassword()){
            $code = Result::SUCCESS ;
            $identity = "administrateur" ;
            $messages = array(
                    "message" => "Welcome administrateur",
            ) ;
        } 
        
        $result = new Result($code, $identity, $messages) ;
        return $result ;
    }
}

?>

Il semblerait que l'on ne puisse faire un getServiceLocator() que dans un controller. Or ma classe n'en ai pas un. Sur le net il n'y a que des exemple où ils sont fait dans le controller. Comment faire en sorte que je puisse récupérer une instance de mon entityManager dans une autre classe ?
J'ai pensé à faire une factorie mais je ne sais absolument pas comment l'implémenter, les exemples que j'ai trouvé sur le net ne sont que des fragments que j'ai du mal à comprendre.

J'espère que ma question est suffisamment clair, sinon n'hésitez pas à me poser des question.

Merci d'avance pour vos réponses.

Dernière modification par michwii (06-02-2013 17:24:11)

Hors ligne

 

#2 05-02-2013 21:40:10

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Salut, il faudrait savoir comment tu instancies ta classe. Est-ce que tu fais quelque part un new MyClasse autre part quand dans les fichiers *.config.php et Module.php ?

Si c'est le cas, tu vas devoir utiliser une Registry.
Si ce n'est pas le cas c'est que tu la récupères via le service manager (dans un contrôleur getServiceLocator() et ailleurs getServiceManager()) pour avoir accès au service manager dans tes classes tu dois implémenter l'interface ServiceManagerAwareInterface

Hors ligne

 

#3 06-02-2013 11:15:54

michwii
Membre
Date d'inscription: 25-01-2013
Messages: 13

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Merci Orkin pour ta réponse big_smile

J'ai donc suivis ton conseil, j'ai implementé ServiceManagerAwareInterface dans ma classe "MyAuthenticationProcess"

Code:

<?php

namespace Authentification;

use Zend\Authentication\Adapter\AdapterInterface;
use Zend\Authentication\Result ;
use Doctrine\ORM\EntityManager;
use Authentification\User;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Zend\ServiceManager\ServiceManagerAwareInterface ;
use Zend\ServiceManager\ServiceManager ;


class MyAuthenticationProcess  implements AdapterInterface, ServiceManagerAwareInterface
{
    protected $_username;
    protected $_password;
    protected $sm ;
    
    /**
     * @var Doctrine\ORM\EntityManager
     */
    protected $em;
    
    
    public function setEntityManager(EntityManager $em)
    {
        $this->em = $em;
    }
    
    public function getEntityManager()
    {
        
        if (null === $this->em) {
            $this->em = $this->getServiceManager()->get('Doctrine\ORM\EntityManager');
        }
        return $this->em;
    }
    

    
    public function getServiceManager(){
        return $this->sm ;
    }
    
    public function setServiceManager(ServiceManager $serviceManager){
        $this->sm = $serviceManager ;
    }
    
    

    /**
     * Sets username and password for authentication
     *
     * @return void
     */
    public function __construct($username, $password)
    {
        $this->_username = $username ;
        $this->_password = $password ;
    }

    /**
     * Performs an authentication attempt
     *
     * @return \Zend\Authentication\Result
     * @throws \Zend\Authentication\Adapter\Exception\ExceptionInterface
     *               If authentication cannot be performed
     */
    public function authenticate()
    {
        /**
         * @ToDo
         * Implementer la connection avec la base de donnée à ce niveau là...
         * 
         * */
        $user = $this->getEntityManager()->find('Authentification\Entity\User', 1);
        
        
        echo $this->getEventManager() ;
        
        $code = Result::FAILURE ;
        $identity = "unknow" ;
        $messages = array(
            "message" => "Mauvaise combinaison de login/password",        
        ) ;
        
        if($this->_username == "poems" && $this->_password == "1234"){
            $code = Result::SUCCESS ;
            $identity = "administrateur" ;
            $messages = array(
                    "message" => "Welcome administrateur",
            ) ;
        } 
        
        $result = new Result($code, $identity, $messages) ;
        return $result ;
    }
    
    
}

?>

Dans mon module.php j'ai crée une factorie pour récuperer une instance de d'un entity Manager

Code:

    public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'EntityManager' => function(ServiceManager $sm) {
                    //$instance = $sm->get('Doctrine\ORM\EntityManager');
                    //$instance->setServiceManager($sm);
                    // Do some other configuration
                    return $sm->get('doctrine.entitymanager.orm_default');
                    
                    //return $instance;
                },
            ),
        );

Seulement le soucis c'est que j'obtiens l'erreur suivante dans le fichier MyAuthenticationProcess :

Code:

Call to a member function get() on a non-object in MyAuthenticationProcess.php on line <b>36</b>

C'est tu d'où peut venir l'erreur ?
Merci d'avance pour ta réponse.

Hors ligne

 

#4 06-02-2013 11:54:54

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Oula t'as pas tout compris je pense :p.
Normalement quand tu implémentes l'interface ServiceManagerAwareInterface il va te demander d'implémenter 2 function setServiceManager et getServiceManager tu dois donc faire les getters et setters qui vont bien.

Code:

[lang=php]
/**
     * Retrieve service manager instance
     *
     * @return ServiceManager
     */
    public function getServiceManager()
    {
        return $this->serviceManager;
    }

    /**
     * Set service manager instance
     *
     * @param ServiceManager $serviceManager
     * @return AbstractService
     */
    public function setServiceManager(ServiceManager $serviceManager)
    {
        $this->serviceManager = $serviceManager;
        return $this;
    }

Ensuite ta factory elle ne sert à rien, d'ailleurs ce n'est même pas une factory. Une factory c'est une classe spécifique qui va retourner une instance de la classe dont tu as besoin et qui va faire des traitements spécifiques un peu complexe. Or l'entity manager a déjà sa propre factory donc pas besoin d'en créer une nouvelle.
Ensuite ce que tu fais dans ton Module.php c'est pas bon et dans la logique tu fais ça :
tu demandes au service manager de te retourner l'entity manager sous la clé EntityManager, entity manager que tu récupères via le ServiceManager donc tu fais une espèce de boucle bizarre.
Si tu veux faire ce genre de chose il faut le faire sous forme d'alias comme expliqué ici http://framework.zend.com/manual/2.0/en … start.html pour éviter d'avoir à te faire chier de taper get('doctrine.entitymanager.orm_default') à chaque fois que tu veux l'entity manager.

Donc pour en revenir à ton problème et ce qu'il se passe. Lorsque tu vas récupérer ta classe MyAuthenticationProcess via le ServiceManager il va voir qu'elle implémente ServiceManagerAwareInterface et va donc via le getter et le setter que tu auras écris lui passer le ServiceManager. Ta classe pourra donc faire un $this->getServiceManager()->get('doctrine.entitymanager.orm_default').

Enfin le dernier problème que tu as c'est que tu n'as pas répondu à tout mes questions :

Orkin a écrit:

Est-ce que tu fais quelque part un new MyClasse autre part quand dans les fichiers *.config.php et Module.php ?

Visiblement la réponse est oui. En gros tu fais quelque part dans ton code ça

Code:

[lang=php]
$process = new MyAuthenticationProcess();

Le problème de faire ça c'est que tu vas avoir une classe prête à l'emploie mais tu ne vas pas profiter des bénéfices de l'implémentation de l'interface ServiceManagerAwareInterface et du coup tu vas faire $this->getServiceManager()->get('xxx') alors que $this->getServiceManager() te renvoi null. En fait cette interface ne sert que sur des classes qui sont instanciées par le service manager. Et c'est lui qui va faire ce code tout seul :

Code:

[lang=php]
$process = new MyAuthenticationProcess();
$process->setServiceManager($serviceManager);
return $process;

A partir de ce moment là tu pourras faire un get depuis le service manager qui sera défini.
Pour que ta classe soient instanciée par le service manager. Il te faut créer un invokables vers le FQCN de la classe MyAuthenticationProcess et dans ton contrôleur appeler la clé que tu auras donné à ta classe (en général on donne le FQCN)

Code:

[lang=php]
// Dans module.config.php
'invokables' => array(
            'Path\To\My\Class\MyAuthenticationProcess' => 'Path\To\My\Class\MyAuthenticationProcess',
        ),

// Dans ton contrôleur
$myClass = $this->getServiceLocator()->get('Path\To\My\Class\MyAuthenticationProcess');

D'ailleurs je crois même que c'est plus nécessaire de définir les classes comme invokables depuis la 2.1 (j'y met pas ma main à couper) mais il me semble que par défaut quand il ne connait pas la clé il fait le FQCN. Bakura pourra confirmer ce point.

Et tu me vires ton code dégueux du fichier Module.php

Hors ligne

 

#5 06-02-2013 14:38:09

michwii
Membre
Date d'inscription: 25-01-2013
Messages: 13

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Merci Orkin pour tes précisions.
Grâce à toi j'avance, lentement mais surement wink

J'ai viré le code "dégeux" du fichier Module.php

J'ai modifié la partie de mon controller qui appellait ma classe MyAuthentificationProcess

Code:

// Set up the authentication adapter
        $authAdapter = new MyAuthenticationProcess($values['login'], $values['password']);
        $authAdapter->setServiceManager($this->getServiceManager());

Donc normalement dans l'instance de la classe MyAuthentificationProcess j'aurai accès à un service manager.
Grâce à ce service manager je pourrais enfin avoir une instance d'un entity Manager.

Pour cela j'ai implémenté l'interface ServiceManagerAwareInterface dans la classe MyAuthentificationProcess et j'ai rajouté 2 méthodes

Code:

    public function getServiceManager(){
        return $this->sm ;
    }
    
    /**
     * Set service manager instance
     *
     * @param ServiceManager $serviceManager
     * @return AbstractService
     */
    public function setServiceManager(ServiceManager $serviceManager)
    {
        $this->serviceManager = $serviceManager;
        return $this;
    }

Le dernier Hic, c'est que j'ai une erreur super bizare 0_O

Code:

<br />
<b>Fatal error</b>:  Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'Zend\View\Renderer\PhpRenderer::render: Unable to render template &quot;layout/layout&quot;; resolver could not resolve to a file' in C:\Elyes Hachem Personnel\xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php:457
Stack trace:
#0 \xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\View.php(201): Zend\View\Renderer\PhpRenderer-&gt;render(Object(Zend\View\Model\ViewModel))
#1\xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\Mvc\View\Http\DefaultRenderingStrategy.php(126): Zend\View\View-&gt;render(Object(Zend\View\Model\ViewModel))
#2 [internal function]: Zend\Mvc\View\Http\DefaultRenderingStrategy-&gt;render(Object(Zend\Mvc\MvcEvent))
#3 xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(460): call_user_func(Array, Object(Zend\Mvc\MvcEvent)) in <b>C:\Elyes Hachem Personnel\xampp\htdocs\kjsencha\vendor\zendframework\zendframework\library\Zend\View\Renderer\PhpRenderer.php</b> on line <b>457</b><br />

Ai-je oublié quelque chose ?

Dernière modification par michwii (06-02-2013 14:38:44)

Hors ligne

 

#6 06-02-2013 16:53:01

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Là ça semble venir d'autre part. As-tu essayé d'accéder à la page en commentant le code que tu as fait voir si tu as une page vide déjà ?

Par contre pour instancier ta classe tu peux passer par le service manager ça t'évites d'avoir à faire $authAdapter->setServiceManager($this->getServiceManager()); le service manager le fera tout seul pour toi. Si tu fais comme ça tu n'as pas besoin de l'interface ServiceManagerAwareInterface

Hors ligne

 

#7 06-02-2013 17:21:47

michwii
Membre
Date d'inscription: 25-01-2013
Messages: 13

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

C'est bon j'ai réussi à obtenir un entity Manager dans ma classe MyAuthenticationProcess.
Pour cela j'ai simplement mis dans la classe MyAuthenticationProcess c'est deux méthodes :

Code:

    /**
     * @var Doctrine\ORM\EntityManager
     */
    protected $em;
    

    public function setEntityManager(EntityManager $em)
    {
        $this->em = $em;
    }
    
    public function getEntityManager()
    {
        
        if (null === $this->em) {
            $this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
        }
        return $this->em;
    }

Dans mon controller j'ai mis :

Code:

        // Set up the authentication adapter
        $sm = $this->getServiceLocator();
        $authAdapter = new MyAuthenticationProcess($values['login'], $values['password']);
        $authAdapter->setEntityManager($sm->get('doctrine.entitymanager.orm_default'));

Maintenant j'arrive enfin à acceder à mon entity manager.

Il me reste un dernier problème à résoudre mais il est surement du à Doctrine.
Je vais recréer un nouveau post.

Merci en tout cas à la communauté vous êtes top wink

A bientôt

Hors ligne

 

#8 07-02-2013 09:46:29

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Salut même si ca fonctionne ça serait bien de mettre en application les conseils que je t'ai donné ... Ton code marche parce que tu as de la chance :

Si $this->em = null il se passe quoi ?

Code:

[lang=php]public function getEntityManager()
    {
        
        if (null === $this->em) {
            $this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager'); // CA PLANTE
        }
        return $this->em;
    }

Pourquoi ? D'une part parce que $this->getServiceLocator() est null puisque tu ne bénéficies pas des avantages du service manager (tu fais toi même le new). Ensuite sois cohérent dans tes appels même si ce n'était pas null tu fais un get sur 'Doctrine\ORM\EntityManager' alors que quand tu fais le set (que tu ne devrais pas avoir besoin de voir puisque tu fais le set via le service manager dans le cas où la variable est nulle) via 'doctrine.entitymanager.orm_default'

Je viens bien t'aider mais si tu n'écoutes pas ce que je dis ça n'a pas de sens. Faire les modifications qu'à moitié ça veut dire que tu reposeras les mêmes questions plus tard parce que ça ne fonctionne pas parce que tu l'auras mal utilisé ailleurs. Et j'aime pas trop me répéter big_smile. Ca ne me gêne pas de passer du temps à expliquer mais si c'est pour ne pas être écouté j'en vois pas la peine wink

Hors ligne

 

#9 08-02-2013 09:25:35

michwii
Membre
Date d'inscription: 25-01-2013
Messages: 13

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Désolé Orkin, ce n'est pas que je n'écoute pas ce que tu dis, c'est simplement que j'essaye de me débrouiller comme je peux.
Le framework Zend est vraiment tout nouveaux pour moi et les concept qui te paraisse très évident sont pour moi très abstrait.

Dans deux semaines, mon entreprise me payera une formation Zend à mon équipe et moi(nous sommes tous débutant). J'espère qu'après celle ci nous aurons de solides bases pour bien débuter en Zend.

La notion de service manager est encore très flou pour moi, je n'ai réussis à obtenir qu'une instance du service locator dans mon controller. Grace à ce service locator j'arrive à obtenir une instance d'un entity manager que je passe après à ma classe MyAuthenticationProcess

Code:

[lang=php]
        $auth = new AuthenticationService();
        
        // Use 'someNamespace' instead of 'Zend_Auth'
        $auth->setStorage(new SessionStorage('loginSession'));
        
        // Set up the authentication adapter
        $serviceLocator = $this->getServiceLocator();
        $entityManager = $serviceLocator->get('Doctrine\ORM\EntityManager') ;
        $authAdapter = new MyAuthenticationProcess($values['login'], $values['password']);
        $authAdapter->setEntityManager($entityManager);

Pour le moment ça marche même si ce n'est pas forcement la bonne méthode.
Je vais continuer à chercher sur le net et à me documenter avant de poster ma solution final.

Dernière modification par michwii (08-02-2013 09:35:43)

Hors ligne

 

#10 08-02-2013 09:57:06

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: [Resolu][Doctrine 2] Entity Manager en dehors d'un controller

Plop, je conçois tout à fait que ça soit nouveau et c'est normal d'avoir du mal sinon ça serait trop simple. Concernant la formation fais bien gaffe à ce que ce soir une foration ZF 2 et non pas une formation ZF 1.X. Le framework a été complètement refondu pour l'occasion.

Le service manager comme je te l'ai dis (servicelocator et servicemanager c'est la même chose, je sais pas pourquoi il y a deux noms différent suivant où on se trouve). Ce service permet d'instancier les classes comme il faut avec de l'injection de dépendance. Ceci permet de capitaliser ton code, tu ne l'écris qu'une seule fois soit via une factory soit via "les fichiers de configuration" de ce fait à chaque fois que tu auras besoin de cette classe tu n'auras pas besoin de refaire partout :

Code:

[lang=php]
$myClass = new MyClass();
$myClass->setParam1($param1);
$myClass->setParam2($param2);
$myClass->setParamX($paramX);

Dans le cas si contre tu peux le faire via une factory, c'est une classe qui va s'occuper d'instancier ta classe et de lui passer tous les paramètres dont elle a besoin. Là où le service manager entre en jeu c'est que tu lui indiques qu'elle factory appeler lorsque tu as besoin de myClass. Lui automatiquement il va appeler la factory qui va faire son boulot et te retourner une instance de myClass avec tout ce dont tu as besoin.
Dans ton cas c'est moins complexe puisqu'au final tu as besoin que du service manager dans ta classe. Or il existe une interface qui permet, lorsque l'on souhaite passer le service manager à une classe, d'éviter de créer une factory. Ce qui est dommage c'est que dans ton cas tu ne te serves pas de cette interface qui est implémenté dans ta classe.

Et là où je dis que tu ne m'as pas écouté totalement c'est sur ce point :

Code:

[lang=php]
// Dans module.config.php
'invokables' => array(
            'Path\To\My\Class\MyAuthenticationProcess' => 'Path\To\My\Class\MyAuthenticationProcess',
        ),
 
// Dans ton contrôleur
$myClass = $this->getServiceLocator()->get('Path\To\My\Class\MyAuthenticationProcess');

Ce code (que tu dois compléter mais je t'ai dis comment le faire plus haut et il y a la documentation officielle) va te retourner une instance de ta classe et elle aura accès au service manager et donc pourra appeler l'entity manager dont tu as besoin. Ceci va t'éviter d'avoir à écrire les 4 lignes que tu écris à chaque fois que tu as besoin de ta classe. A la place tu n'auras que la dernière de mon exemple.

Enfin je t'ai aussi dit d'utilise doctrine.entitymanager.orm_default plutôt que Doctrine\ORM\EntityManager pour appeler l'entity manager via le service manager et c'est pareil tu n'en as pas tenu compte. Certes ça fonctionne comme tu as fait mais dans le cas où tu as plusieurs connexions ça devient problématique.

Pour te documenter la doc officielle est vraiment bien foutu et apporte pas mal de précisions. J'étais réticent au début à regarder dedans puisque je comprenais pas grand chose et avec le recul et en se posant les bonnes question on arrive à trouver pas mal d'informations.

Enfin j'ai pas réagis sur le coup mais tu as le service d'authentification qui permet de gérer les connexions et les sessions wink

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages