Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'ai le message d'erreur suivant :
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 :
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) :
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 . 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
Bonjour, il faut mettre Zend_DB_Table_Abstract::setDefaultAdapter(), c'est indispensable.
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
Bonjour
Je confirme,
Zend_Db_Table::setDefaultAdapter($db)
voir également le
tutoriel de Julien Pauli sur le sujet
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
Pages: 1