Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-03-2010 17:57:12

Knilux
Nouveau membre
Date d'inscription: 24-03-2010
Messages: 1

[Zend_Db][1.10.2] Instancier un Table_Abstract : "No adapter found"

Bonjour,

J'ai le message d'erreur suivant :

Code:

An error occurred
Application error
Exception information:

Message: No adapter found for DbTable_Utilisateur
Stack trace:

#0 .../ZendFramework-1.10.2/library/Zend/Db/Table/Abstract.php(739): Zend_Db_Table_Abstract->_setupDatabaseAdapter()
#1 .../ZendFramework-1.10.2/library/Zend/Db/Table/Abstract.php(268): Zend_Db_Table_Abstract->_setup()
#2 .../application/models/Utilisateur.php(85): Zend_Db_Table_Abstract->__construct()
#3 .../application/models/Utilisateur.php(119): Utilisateur::getTable()
#4 .../application/controllers/LoginController.php(21): Utilisateur::fetchAll()
#5 .../ZendFramework-1.10.2/library/Zend/Controller/Action.php(513): LoginController->indexAction()
#6 .../ZendFramework-1.10.2/library/Zend/Controller/Dispatcher/Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
#7 .../ZendFramework-1.10.2/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#8 .../ZendFramework-1.10.2/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#9 .../ZendFramework-1.10.2/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#10 .../public/index.php(26): Zend_Application->run()
#11 {main}  

Request Parameters:

array (
  'controller' => 'login',
  'action' => 'index',
  'module' => 'default',
)

qui semble se produire au moment d'instancier un objet Zend_Db_Table_Abstract :

Code:

class DbTable_Utilisateur extends Zend_Db_Table_Abstract;
...
new DbTable_Utilisateur();

Pour se connecter à la BD, voici mon application.ini (base Sqlite, pas d'authentification) :

Code:

resources.db.adapter = "PDO_SQLITE"
resources.db.params.dbname = APPLICATION_PATH "/../data/db/forum.db"
resources.db.isDefaultTableAdapter = true

J'ai vu beaucoup de gens parler de config à mettre dans le bootstrap pour charger des choses genre "Zend_DB_Table_Abstract::setDefaultAdapter()", mais si j'ai bien compris, mon application.ini se charge de tout (la ligne "resources.db.isDefaultTableAdapter = true").
N'importe quelle instruction dans une fonction "_initDB()" du bootstrap provoque l'apparition d'une page blanche (comment y afficher les exceptions récupérées dans le bootstrap ?).

J'ai déjà plus ou moins suivi 10 000 tutos différents pour se connecter à une BD avec Zend, sans succès hmm. C'est sûrement un truc tout bête.

Merci beaucoup !

PS : pour faire mon utilisateur noob de base, j'ai envie de dire que "ça a marché une fois et puis soudain plus rien". Je suis incapable de dire ce qui a changé entre quand ça a marché et après.

Hors ligne

 

#2 25-03-2010 14:09:44

Zartan
Membre
Date d'inscription: 22-06-2009
Messages: 49

Re: [Zend_Db][1.10.2] Instancier un Table_Abstract : "No adapter found"

Bonjour, il faut mettre Zend_DB_Table_Abstract::setDefaultAdapter(), c'est indispensable.

Code:

    protected function _initDb()
    {
        $pluginDb = $this->getPluginResource('db');
    $db = $pluginDb->getDbAdapter();
    Zend_Db_Table::setDefaultAdapter($db);    // FIXME: ne devrait pas être nécessaire car initialisé dans application.ini    
        return $db ;
    }

Hors ligne

 

#3 24-05-2010 11:30:32

freeseb
Nouveau membre
Date d'inscription: 17-02-2009
Messages: 3

Re: [Zend_Db][1.10.2] Instancier un Table_Abstract : "No adapter found"

Bonjour
Je confirme,

Code:

Zend_Db_Table::setDefaultAdapter($db)

voir également le
tutoriel de Julien Pauli sur le sujet

Code:

    
   protected function _initDb()
    {
        
        // charge le plugin de resource db, en lui passant bien sur
        // sa configuration, lue depuis application.ini
    $pluginDb = $this->getPluginResource('db');
        
    $db = $pluginDb->getDbAdapter();
        $db->setFetchMode ( Zend_Db::FETCH_OBJ );
      
        Zend_Db_Table::setDefaultAdapter($db); 
        
        try {
            // Tentative de connexion
            $db->getConnection();
        } catch (Zend_Db_Adapter_Exception $e) {
            die ("Probablement mauvais identifiants,ou alors le SGBD n'est pas joignable: ".$e->getMessage());
    } 
        
    // retourne l'objet configuré afin que le bootstap
    // puisse le stocker dans son registre et nous le retourner à la demande
    return $db;
        
     } //Eof:: initDb

Dernière modification par freeseb (24-05-2010 11:33:32)

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