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:: initDbDernière modification par freeseb (24-05-2010 11:33:32)
Hors ligne
Pages: 1