Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'opte pour le classique pattern MVC mais je me retrouve avec une erreur d'adaptateur de connexion à la base de données.
Voici pour commencer, le code de l'index.php, situé dans "/www/htdocs/InfoNaut/public"
<?php // Define path to application directory defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); // Define application environment defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development')); // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), get_include_path(), ))); //Zend_Layout::startMvc(array('layoutPath' => '/../applications/views/layouts')); /** Zend_Application */ require_once 'Zend/Application.php'; // Create application, bootstrap, and run $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
Le .ini (application.ini) dans /www/htdocs/InfoNaut/application/configs/")
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 phpSettings.date.timezone = "Europe/Paris" includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" resources.frontController.params.displayExceptions = 0 resources.view[] = resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" resources.db.adapter = PDO_MYSQL resources.db.params.host = localhost resources.db.username = root resources.db.password = root resources.db.dbname = Infonaut [staging : production] [testing : production] [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
Pour aider, voici le début du code du contrôleur :
<?php require_once (APPLICATION_PATH."/models/Tavurnav.php"); class InfonautController extends Zend_Controller_Action { //appel a index.phtml public function indexAction () { $this->view->message = "controleur par défaut du controleur infonaut"; } //appel a list.*.phtml public function listAction () { $this->view->message="action listing du controleur infonaut"; $infonaut = new Tavurnav; <----- ici l'appel à une classe modèle } //appel a edit.phtml public function editAction () { } public function deleteAction() { }
Voici le coeur du problème, le bootstap ("/www/htdocs/InfoNaut/application")
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDoctype () { $this->bootstrap('view'); $view = $this->getResource('view'); $view->doctype('XHTML1_STRICT'); ini_set('display_errors', 1); $config= new Zend_Config_Ini (APPLICATION_PATH .'/configs/application.ini','development'); try{ $db=Zend_Db::factory($config->resources->db); //$registry = Zend_Registry::getInstance(); //$registry->set('config', $config); $db->getConnection(); Zend_Db_Table_Abstract::setDefaultAdapter($db); } catch (Zend_Db_Adapter_Exception $e){ echo "connexion impossible à la base"; } catch (Zend_Exception $e) { echo "classe introuvable"; } } }
Je me retrouve avec l'erreur suivante lorsque je teste l'appli :
connexion impossible à la base Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'Configuration array must have a key for 'dbname' that names the database instance' in /www/htdocs/InfoNaut/library/Zend/Db/Adapter/Abstract.php:287 Stack trace: #0 /www/htdocs/InfoNaut/library/Zend/Db/Adapter/Abstract.php(183): Zend_Db_Adapter_Abstract->_checkRequiredOptions(Array) #1 /www/htdocs/InfoNaut/library/Zend/Db.php(270): Zend_Db_Adapter_Abstract->__construct(Array) #2 /www/htdocs/InfoNaut/library/Zend/Application/Resource/Db.php(142): Zend_Db::factory('PDO_MYSQL', Array) #3 /www/htdocs/InfoNaut/library/Zend/Application/Resource/Db.php(154): Zend_Application_Resource_Db->getDbAdapter() #4 /www/htdocs/InfoNaut/library/Zend/Application/Bootstrap/BootstrapAbstract.php(683): Zend_Application_Resource_Db->init() #5 /www/htdocs/InfoNaut/library/Zend/Application/Bootstrap/BootstrapAbstract.php(626): Zend_Application_Bootstrap_BootstrapAbstract->_executeResource('db') #6 /www/htdocs/InfoNaut/library/Zend/Application/Bootstrap/BootstrapAbstract.php( in /www/htdocs/InfoNaut/library/Zend/Db/Adapter/Abstract.php on line 287
Pourriez vous m'aider à me décoincer, en espérant avoir donné suffisamment de billes...
Dernière modification par roswellenshort (25-09-2012 14:01:48)
Hors ligne
Bonjour,
Dans ton application.ini il manque les clés params apres resources.db.
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = root
resources.db.params.dbname = Infonaut
http://framework.zend.com/manual/1.12/f … sources.db
Dernière modification par us2rn4m2 (24-09-2012 21:26:42)
Hors ligne
En effet, ça marche mieux Merci (j'ai trouvé ce matin en arrivant, la tête fraiche)
Hors ligne