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 287Pourriez 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)
 Merci (j'ai trouvé ce matin en arrivant, la tête fraiche)
Hors ligne