IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres composants PHP Discussion :

Intégration Doctrine dans Zend


Sujet :

Autres composants PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut Intégration Doctrine dans Zend
    Bonjour, je suis en train de suivre le tutoriel de Thorin19 ici :

    http://www.throrinstudio.com/blog/in...e/idarticle/51

    Seulement lorsque je lance "php Doctrine.php"

    Je me retrouve toujours avec cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    c:\wamp\www\tutosite.com\application\scripts>php Doctrine.php
     
    PHP Fatal error: Uncaught exception 'Doctrine_Connection_Exception' with messag
    e 'There is no open connection' in C:\wamp\www\tutosite.com\library\Doctrine\Man
    ager.php:662
    Stack trace:
    #0 C:\wamp\www\tutosite.com\library\Doctrine\Manager.php(264): Doctrine_Manager-
    >getCurrentConnection()
    #1 C:\wamp\www\tutosite.com\application\Bootstrap.php(98): Doctrine_Manager::con
    nection(NULL, 'doctrine')
    #2 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract
    .php(667): Bootstrap->_initDoctrine()
    #3 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract
    .php(627): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('doctr
    ine')
    #4 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract
    .php(584): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap('doctrine')
    #5 C:\wamp\www\tutosite.com\application\scripts\Doctrine.php(31): Zend_Applicati
    on_Bootstrap_BootstrapAbstract->bootstrap('doctrine')
    #6 {main}
    thrown in C:\wamp\www\tutosite.com\library\Doctrine\Manager.php on line 662
     
    Fatal error: Uncaught exception 'Doctrine_Connection_Exception' with message 'Th
    ere is no open connection' in C:\wamp\www\tutosite.com\library\Doctrine\Manager.
    php:662
    Stack trace:
    #0 C:\wamp\www\tutosite.com\library\Doctrine\Manager.php(264): Doctrine_Manager-
    >getCurrentConnection()
    #1 C:\wamp\www\tutosite.com\application\Bootstrap.php(98): Doctrine_Manager::con
    nection(NULL, 'doctrine')
    #2 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract
    .php(667): Bootstrap->_initDoctrine()
    #3 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract
    .php(627): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('doctr
    ine')
    #4 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract
    .php(584): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap('doctrine')
    #5 C:\wamp\www\tutosite.com\application\scripts\Doctrine.php(31): Zend_Applicati
    on_Bootstrap_BootstrapAbstract->bootstrap('doctrine')
    #6 {main}
    thrown in C:\wamp\www\tutosite.com\library\Doctrine\Manager.php on line 662
    J'ai bien déclaré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    protected static function _initNamespaces() 
    {
    $autoloader = Zend_Loader_Autoloader::getInstance();
    $autoloader->registerNamespace('App_');
    $autoloader->registerNamespace('Doctrine_');
    $autoloader->registerNamespace('Doctrine');	
    }
    dans le bootstrap.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    et le _initDoctrine() ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut
    J'ai repris le même que dans l'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    protected function _initDoctrine() 
    	{
    		//on met Doctrine en autoload
            $this->getApplication()
                 ->getAutoloader()
                 ->pushAutoloader ( array ('Doctrine', 'autoload' ) );
            spl_autoload_register(array('Doctrine', 'modelsAutoload'));
     
            //on récupère une instance de Doctrine
            $manager = Doctrine_Manager::getInstance ();
     
            //permet de valider automatiquement l'intégrité des données
            //ce qui veut dire que l'on ne peut pas mettre une variable de type string
            //dans une variable de type int.
            $manager->setAttribute (Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL);
            //l’AUTO_ACCESSOR_OVERRIDE va nous permettre de personnaliser l’assignation de données.
            $manager->setAttribute ( Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true );
            //Doctrine permet de personnaliser également les classes de table en permettant 
            //de créer des méthodes propres à une table. 
            //Ce paramètre permet de charger le fichier contenant nos méthodes personnalisées.
            $manager->setAttribute (
            	Doctrine::ATTR_MODEL_LOADING, 
            	Doctrine::MODEL_LOADING_CONSERVATIVE
            );
            //on permet le chargement des classes table
            $manager->setAttribute ( Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true );
     
            //on récupère toutes les options doctrine du fichier app.ini
            $doctrineConfig = $this->getOption('doctrine');
     
            //on récupère la variable doctrine.models_path du fichier app.ini
            //afin d'avoir le répertoire des models
            //pour que Doctrine les charge
            Doctrine::loadModels($doctrineConfig['models_path']);
     
            //on récupère la connexion à mysql et on la nomme doctrine
            $conn = Doctrine_Manager::connection($doctrineConfig['dsn'],'doctrine');
            //je sais plus ce que sa veut dire, mais il le faut
            $conn->setAttribute(Doctrine::ATTR_USE_NATIVE_ENUM,true);
     
            //on définit la sortie encodée en UTF-8
            $conn->setCharset('utf8');
            $conn->setCollate('utf8_general_ci');
     
            //on retourne la connexion
            return $conn;
        }

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Normalement la classe unique Doctrine n'existe plus (est plutôt déprécié) il faut utilise Doctrine_Core a la place.
    Est tu sur de ton DSN ? la il est sur NULL

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut
    Est-ce que tu connais un bon tuto pour l'intégration de doctrine dans Zend, assez récent?

    Si tu parles de cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doctrine.dsn= "mysql://root@localhost/tutosite"
    Je t'avoue que c'est la seule pour laquelle j'ai un doute :
    Je n'ai pas de mot de passe, et mon nom d'utilisateur est "root"

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    je disais plus ça dans le sens ou $doctrineConfig['dsn'] n'a pas l'air de renvoyer grand chose

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut
    Yep, je suis d'accord. Mais je ne vois toujours pas d'où cela peut venir. Je vais essayer de changer deux trois configs, mais si une âme qui passe a la bonté e m'expliquer, je suis preneur.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ton niveau d'erreur est bien au maximum ?, au pire regarde avec un var_dump ce que rend $doctrineConfig

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut
    Elle contient bien "NULL"

    Mon message d'erreur se situe en deux parties :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined variable: doctrineConfig in C:\wamp\www\tutosite.com\application\modules\default\views\scripts\index\index.phtml on line 2
    puis
    Je ne sais pas s'il "est maximum" par contre.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    le var_dump met le direct dans le _initDoctrine pas dans la vue

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut
    J'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    array
      'dsn' => string 'mysql://root@localhost/tutosite' (length=31)
      'data_fixtures_path' => string 'C:\wamp\www\tutosite.com\application/configurations/data/fixtures' (length=65)
      'sql_path' => string 'C:\wamp\www\tutosite.com\application/configurations/data/sql' (length=60)
      'migrations_path' => string 'C:\wamp\www\tutosite.com\application/configurations/migrations' (length=62)
      'yaml_schema_path' => string 'C:\wamp\www\tutosite.com\application/configurations/schema.yml' (length=62)
      'models_path' => string 'C:\wamp\www\tutosite.com\application/../library/App/Models' (length=58)
      'generate_models_options' => 
        array
          'pearStyle' => string '1' (length=1)
          'generateTableClasses' => string '1' (length=1)
          'generateBaseClasses' => string '1' (length=1)
          'baseClassPrefix' => string 'Base_' (length=5)
          'baseClassesDirectory' => string '' (length=0)
          'classPrefixFiles' => string '' (length=0)
          'classPrefix' => string 'App_Models_' (length=11)

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    étrange il est bien la, pourtant il rend NULL apres, essaye de le mettre en hard dans la méthode pour testé

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut
    quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            $conn = Doctrine_Manager::connection($doctrineConfig['mysql://root@localhost/tutosite'],'doctrine');
    Edit : voici l'erreur que ça génère. La même en fait, mais la voici en mieux indentée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    PHP Fatal error:  Uncaught exception 'Doctrine_Connection_Exception' with message 'There is no open connection' in C:\wamp\www\tutosite.com\library\Doctrine\Manager.php:662
    Stack trace:
    #0 C:\wamp\www\tutosite.com\library\Doctrine\Manager.php(264): Doctrine_Manager->getCurrentConnection()
    #1 C:\wamp\www\tutosite.com\application\Bootstrap.php(98): Doctrine_Manager::connection(NULL, 'doctrine')
    #2 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract.php(667): Bootstrap->_initDoctrine()
    #3 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract.php(627): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('doctrine')
    #4 C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract.php(584): Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap('doctrine')
    #5 C:\wamp\www\tutosite.com\application\scripts\Doctrine.php(31): Zend_Application_Bootstrap_BootstrapAbstract->bootstrap('doctrine')
    #6 {main}
    thrown in C:\wamp\www\tutosite.com\library\Doctrine\Manager.php on line 662
     
     Fatal error: Uncaught exception 'Doctrine_Connection_Exception' with message 'There is no open connection' in C:\wamp\www\tutosite.com\library\Doctrine\Manager.php on line 662
    Doctrine_Connection_Exception: There is no open connection in C:\wamp\www\tutosite.com\library\Doctrine\Manager.php on line 662
    Call Stack:
     0.0007     641448   1. {main}() C:\wamp\www\tutosite.com\application\scripts\Doctrine.php:0
     0.0170    2124384   2. Zend_Application_Bootstrap_BootstrapAbstract->bootstrap() C:\wamp\www\tutosite.com\application\scripts\Doctrine.php:31
     0.0170    2124384   3. Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap() C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract.php:584
     0.0170    2124384   4. Zend_Application_Bootstrap_BootstrapAbstract->_executeResource() C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract.php:627
     0.0172    2125896   5. Bootstrap->_initDoctrine() C:\wamp\www\tutosite.com\library\Zend\Application\Bootstrap\BootstrapAbstract.php:667
     0.0213    2542056   6. Doctrine_Manager::connection() C:\wamp\www\tutosite.com\application\Bootstrap.php:98
     0.0213    2542056   7. Doctrine_Manager->getCurrentConnection() C:\wamp\www\tutosite.com\library\Doctrine\Manager.php:264

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    non plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $conn = Doctrine_Manager::connection('mysql://root@localhost/tutosite','doctrine');

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 14
    Points
    14
    Par défaut
    L'erreur est un peu différente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    C:\wamp\www\tutosite.com\application\scripts>php Doctrine.php
    NULL
    PHP Catchable fatal error:  Argument 1 passed to Doctrine_Cli::__construct() must be an array, null given, called in C:\wamp\www\tutosite.com\application\scripts\Doctrine.php on line 34 and defined in C:\wamp\www\tutosite.com\library\Doctrine\Cli.php on line 77
    PHP Stack trace:
    PHP   1. {main}() C:\wamp\www\tutosite.com\application\scripts\Doctrine.php:0
    PHP   2. Doctrine_Cli->__construct() C:\wamp\www\tutosite.com\application\scripts\Doctrine.php:34
     
    Catchable fatal error: Argument 1 passed to Doctrine_Cli::__construct() must be an array, null given, called in C:\wamp\www\tutosite.com\application\scripts\Doctrine.php on line 34 and defined in C:\wamp\www\tutosite.com\library\Doctrine\Cli.php on line 77
     
    Call Stack:
      0.0007     641448   1. {main}() C:\wamp\www\tutosite.com\application\scripts\Doctrine.php:0
      0.0403    3728424   2. Doctrine_Cli->__construct() C:\wamp\www\tutosite.com\application\scripts\Doctrine.php:34
    4

    Si j'ai bien compris, il reste nul lors de l'appel au constructeur. Alors que sur ma page, j'ai bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    array
      'dsn' => string 'mysql://root@localhost/tutosite' (length=31)
    Pourtant, lorsque je fais un "var_dump" de $conn, j'ai bien ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    protected 'options' => 
        array
          'dsn' => string 'mysql:host=localhost;dbname=tutosite' (length=36)
          'username' => string 'root' (length=4)
          'password' => null
          'other' => 
            array
              empty

Discussions similaires

  1. Intégration Doctrine 1.2 à Zend
    Par freerider-fou dans le forum Zend_Db
    Réponses: 0
    Dernier message: 22/02/2012, 20h24
  2. intégration pdf dans access
    Par chichant dans le forum Access
    Réponses: 1
    Dernier message: 06/03/2006, 10h38
  3. [FLASH 8] Intégration Php dans une anim Flash
    Par MrPink dans le forum Flash
    Réponses: 1
    Dernier message: 01/02/2006, 22h26
  4. Intégration sql dans delphi
    Par the watcher dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/11/2005, 10h46
  5. Intégration 3DS dans OPENGL
    Par clara dans le forum OpenGL
    Réponses: 3
    Dernier message: 28/12/2004, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo