Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-08-2009 11:36:48

mickglsn
Membre
Lieu: Sèvres
Date d'inscription: 22-08-2009
Messages: 25

No adapter found for Direct

Bonjour.
Je débute avec ZF et j'ai un soucis pour accéder à ma base de données.

Dans mon bootstrap j'ai ceci :

Code:

try {
    $db = Zend_Db::factory($config->database);
    
    $db->getConnection();
    
    Zend_Db_Table::setDefaultAdapter($db);
} catch (Zend_Db_Adapter_Exception $e) {
    $log->log($e, Zend_Log::EMERG);
} catch (Zend_Exception $e) {
    $log->log($e, Zend_Log::EMERG);
}

La connexion semble bien s'effectuer car aucun log n'est enregistré. Si j'indique un paramètre incorrect de BDD, un log est enregistré.

Dans la classe de models/Direct.php j'ai ceci :

Code:

<?php
class Direct extends Zend_Db_Table_Abstract
{
    protected $_name = 'direct';
    protected $_primary = 'id';
}

Dans mon controller j'ai ceci :

Code:

public function indexAction()
    {
        new Direct();
}

Quand j'ouvre la page dans mon navigateur j'ai l'erreur suivante :

Code:

Une erreur est survenue
Application error
Information relative � l'exception:

Message: No adapter found for Direct
Trace d'ex�cution:

#0 /home/directve/sd/dev-demo/www/library/Zend/Db/Table/Abstract.php(739): Zend_Db_Table_Abstract->_setupDatabaseAdapter()
#1 /home/directve/sd/dev-demo/www/library/Zend/Db/Table/Abstract.php(268): Zend_Db_Table_Abstract->_setup()
#2 /home/directve/sd/dev-demo/www/application/controllers/IndexController.php(17): Zend_Db_Table_Abstract->__construct()
#3 /home/directve/sd/dev-demo/www/library/Zend/Controller/Action.php(513): IndexController->indexAction()
#4 /home/directve/sd/dev-demo/www/library/Zend/Controller/Dispatcher/Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
#5 /home/directve/sd/dev-demo/www/library/Zend/Controller/Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#6 /home/directve/sd/dev-demo/www/library/Zend/Controller/Front.php(212): Zend_Controller_Front->dispatch()
#7 /home/directve/sd/dev-demo/www/application/bootstrap.php(32): Zend_Controller_Front::run('/home/directve/...')
#8 /home/directve/sd/dev-demo/www/public/index.php(2): require('/home/directve/...')
#9 {main}
Param�tres de la requ�te:

array(3) { ["controller"]=> string(5) "index" ["action"]=> string(5) "index" ["module"]=> string(7) "default" }

Savez-vous d'où provient l'erreur ?
J'ai regardé plusieurs exemples de codes sur Internet sans succès.

Merci d'avance pour vos retours.

Hors ligne

 

#2 23-08-2009 13:22:33

dev-k
Membre
Lieu: Barcelona
Date d'inscription: 18-07-2009
Messages: 77
Site web

Re: No adapter found for Direct

Salut,

Je pense que tu as oublié de signaler que $db est l'adapteur par défaut.

http://framework.zend.com/manual/fr/zen … lt-adapter

Hors ligne

 

#3 23-08-2009 13:29:05

mickglsn
Membre
Lieu: Sèvres
Date d'inscription: 22-08-2009
Messages: 25

Re: No adapter found for Direct

Merci de votre réponse. Malheureusement j'ai effectué la modification dans mon fichier application/bootstrap.php en faisant ce que vous dites :

Code:

try {
    $db = Zend_Db::factory($config->database);
    
    $db->getConnection();
    Zend_Db_Table_Abstract::setDefaultAdapter($db);
    
    /*Zend_Db_Table::setDefaultAdapter($db);
    Zend_Registry::set('dbAdapter', $db);*/
} catch (Zend_Db_Adapter_Exception $e) {
    // probablement mauvais identifiants,
    // ou alors le SGBD n'est pas joignable
    $log->log($e, Zend_Log::EMERG);
} catch (Zend_Exception $e) {
    // probablement que factory() n'a pas réussi à charger
    // la classe de l'adaptateur demandé
    $log->log($e, Zend_Log::EMERG);
}

Malheureusement j'ai toujours le même message d'erreur.

Pour information, le fichier application/bootstrap.php est inclus dans le fichier public/index.php

Hors ligne

 

#4 23-08-2009 15:03:39

mickglsn
Membre
Lieu: Sèvres
Date d'inscription: 22-08-2009
Messages: 25

Re: No adapter found for Direct

En fait j'ai l'impression que ces lignes déclarées dans bootstrap.php (inclus dans index.php) ne sont pas reconnue dans application/controllers/IndexController.php sad

Hors ligne

 

#5 24-08-2009 08:23:04

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: No adapter found for Direct

Si ta classe est dans models/, elle doit être préfixée par l'arborescence : dans ton cas Model_Direct, et peut être même le nom du module avant, si tu as une architecture modulaire.
Par exemple si tu es dans /module1/models, ta classe doit s'appeler Module1_Model_Direct, et se trouver dans un fichier direct.php
j'espère que ça pourra t'aider


veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#6 24-08-2009 08:29:43

mickglsn
Membre
Lieu: Sèvres
Date d'inscription: 22-08-2009
Messages: 25

Re: No adapter found for Direct

Merci de ton retour. Je regarde ça ce soir et je te tiens au courant.
Encore merci.

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