IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Pas d'entrée enregistrée pour 'dbAdapter' (zend_auth) [ZF 1.10]


Sujet :

Zend Framework PHP

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut Pas d'entrée enregistrée pour 'dbAdapter' (zend_auth)
    Bonjour,

    J'ai réussi à configurer non sans problèmes mon architecture Zend à la main et tout fonctionne à peu près bien, donc j'ai essayé d'ajouter le composant permettant l'authentification.

    Des problèmes s'en sont suivis, mon formulaire s'affiche correctement cependant lorsque j'entre le login et mdp une erreur dut apparemment à la configuration de db.adapter.

    Comme des codes sont souvent plus explicites que de longues phrase :

    Ici je récupère les infomations du registre dans AuthController.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
    class AuthController extends Zend_Controller_Action
    {
    	function init()
    	{
    		$this->initView();
    		$this->view->baseUrl = $this->_request->getBaseUrl();
    	}
     
    	function indexAction()
    	{
    		$this->_redirect('/');
    	}
    	function loginAction(){
    		$this->view->message = '';
     
    		if ($this->_request->isPost()) {
    			// collect the data from the user
    			Zend_Loader::loadClass('Zend_Filter_StripTags');
    			$f = new Zend_Filter_StripTags();
    			$username = $f->filter($this->_request->getPost('username'));
    			$password = $f->filter($this->_request->getPost('password'));
     
    			if (empty($username)) {
    				$this->view->message = 'Please provide a username.';
    			} else {
    				// setup Zend_Auth adapter for a database table
    				Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
    				$dbAdapter = Zend_Registry::get('dbAdapter');
     
    				$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
    				$authAdapter->setTableName('users');
    				$authAdapter->setIdentityColumn('username');
    				$authAdapter->setCredentialColumn('password');
     
    				// Set the input credential values to authenticate against
    				$authAdapter->setIdentity($username);
    				$authAdapter->setCredential($password);
     
    				// do the authentication
    				$auth = Zend_Auth::getInstance();
    				$result = $auth->authenticate($authAdapter);
     
    				if ($result->isValid()) {
    					// success: store database row to auth's storage
    					// system. (Not the password though!)
    					$data = $authAdapter->getResultRowObject(null, 'password');
    					$auth->getStorage()->write($data);
    					$this->_redirect('/');
    				} else {
    					// failure: clear database row from session
    					$this->view->message = 'Login failed.';
    				}
    			}
    		}
    		$this->view->title = "Authentification";
    		$this->render();
    	}
    }
    Et plus précisément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dbAdapter = Zend_Registry::get('dbAdapter');

    Cette erreur est, je pense dut au fait qu'il n'arrive pas à récupérer les informations de 'dbAdapter'

    Pourtant sur mon point d'amorçage je lui précise ces informations (du moins je pense)

    code de index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		// Chargement de la configuration
    	$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 'production');
    	$registry = Zend_Registry::getInstance();
     
    	$registry->set('dbAdapter', $config);
    	// Mise en place du contrôleur
    	$frontController = Zend_Controller_Front::getInstance();
    	Zend_Registry::set('dbAdapter', $config);

    A tout hasard je vous met également mon fichier de configuration application.ini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    [production]
    phpSettings.date.timezone = "Europe/Paris"
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    db.adapter = PDO_MYSQL
    db.params.host = localhost
    db.params.username = nomutilisateur
    db.params.password = motdepasse
    db.params.dbname = nomBD
     
    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 = 1
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/"
    resources.view[] =
    Merci d'avoir pris le temps de lire ce post

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Je précise qu'avec la méthode du tutoriel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // setup database
    	$dbAdapter = Zend_Db::factory($config->db->adapter,
    	$config->db->config->asArray());
    	Zend_Db_Table::setDefaultAdapter($db);
    	Zend_Registry::set('dbAdapter', $db);
    qui est à mettre dans le point d'amorçage index.php

    j'ai une erreur : Fatal error: Call to a member function asArray() on a non-object

    Et après avoir testé $config->db->config me renvoi une valeur NULL

    (bien entendu ce n'est pas un objet d'ou l'erreur)

    Qu'ai je mal fait ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Bonjour,

    Il te faut quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    resources.db.adapter = PDO_MYSQL
    resources.db.params.host = localhost
    resources.db.params.username = nomutilisateur
    resources.db.params.password = motdepasse
    resources.db.params.dbname = nomBD
    non ?

    Cordialement.

  4. #4
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    c'est ce que j'avais à la base puis je l'ai enlevé (va savoir ce que j'avais comme idée) mais même en l'ayant remis :

    [production]
    phpSettings.date.timezone = "Europe/Paris"
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1

    resources.db.adapter = PDO_MYSQL
    resources.db.params.host = localhost
    resources.db.params.username = nomutilisateur
    resources.db.params.password = motdepasse
    resources.db.params.dbname = nomBD

    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 = 1
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/"
    resources.view[] =
    Effectivement après l'avoir changé il à l'air de mieux le reconnaitre, mais pas tout à fait, j'obtient l'erreur suivante :

    Notice: Trying to get property of non-object // pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dbAdapter = Zend_Db::factory($config->db->adapter,
    	$config->db->config->asArray());

    Fatal error: Call to a member function asArray() on a non-object

    avec la méthode toArray(), même résultat

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Ok,

    C'est quoi l'erreur que tu as ? Le texte de l'erreur.

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Notice: Trying to get property of non-object in C:\wamp\www\projet\public\index.php on line 35

    Notice: Trying to get property of non-object in C:\wamp\www\projet\public\index.php on line 36

    Fatal error: Call to a member function toArray() on a non-object in C:\wamp\www\projet\public\index.php on line 36



    les lignes 35 - 36 correspondent au code cité plus haut.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    En fait,

    ta variable $config est une instance de la classe Zend_Config_Ini, donc pour accéder à la valeur "resources.db.params.host" il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $config->resources->db->params->host
    Et dans la classe Zend_Config_Ini il y a une méthode "toArray()", il faut faire juste Ceci est valable si tu as ZF 1.9.6 ou plus!

  8. #8
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Ouhla, je me sent bête, tu as raison pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $config->resources->db->params->host
    j'ai également modifié comme tu me l'as conseillé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$dbAdapter = Zend_Db::factory($config->resource->db->adapter, $config->toArray());

    Cependant du coup j'ai l'erreur Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'Configuration array must have a key for 'dbname' that names the database instance'

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Ok je vois,

    Tu fais ça alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $dbAdapter = Zend_Db::factory($config->resources->db->adapter, array(
        'host'     => $config->resources->db->params->host,
        'username' => $config->resources->db->params->username,
        'password' => $config->resources->db->params->password,
        'dbname'   => $config->resources->db->params->dbname
    ));

  10. #10
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    j'ai essayé avec le nouveau bout de code que tu m'as donné.

    et j'ai toujours une erreur, je te copie les pages concernés ainsi que l'erreur, tu y verra peut être plus clair.


    projet/public/index.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?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') : 'production'));
     
    	// Ensure library/ is on include_path
    	set_include_path(implode(PATH_SEPARATOR, array(
    	    realpath(APPLICATION_PATH . '/../library'),
    	    get_include_path(),
    	)));
    	//Chargement des classes nécéssaires à l'application
    	require_once 'Zend/Config/Ini.php';
    	require_once 'Zend/Registry.php';
    	require_once 'Zend/Controller/Front.php';
    	require_once 'Zend/Application.php';
    	require_once 'Zend/Loader.php';
    	require_once 'Zend/Debug.php';
    	require_once 'Zend/Db.php';
    	require_once 'Zend/Session.php';
    	require_once 'Zend/db/table.php';
     
    	//on est en mode dev : developpeur ou prod : production
    	define('APP_MODE', 'dev');
    	// Chargement de la configuration
    	$config = new Zend_Config_Ini(APPLICATION_PATH .'/configs/application.ini', APP_MODE);
    	$registry = Zend_Registry::getInstance();
    	$registry->set('dbAdapter', $config);
     
    	// Mise en place de la BDD
    	$db = Zend_Db::factory($config->resource->db);
    	Zend_Db_Table::setDefaultAdapter($db);
     
     
    	// setup database
    	$dbAdapter = Zend_Db::factory($config->resource->db->adapter, array(
        'host'     => $config->resource->db->params->host,
        'username' => $config->resource->db->params->username,
        'password' => $config->resource->db->params->password,
        'dbname'   => $config->resource->db->params->dbname
    ));
    //	$dbAdapter = Zend_Db::factory($config->resource->db->adapter,
    //	$config->toArray());
    //	Zend_Db_Table::setDefaultAdapter($db);
    //	Zend_Registry::set('dbAdapter', $db);
     
    	//creer l'application zend, le bootstrap, les éxécutent
    	$application = new Zend_Application(
    	    APPLICATION_ENV,
    	    APPLICATION_PATH . '/configs/application.ini'
    	);
     
     
    	Zend_Controller_Front::run('../application/controllers');
    	$application->bootstrap()->run();
     
    ?>

    projet/application/controllers/IndexController.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    <?php
     
    // La classe correspondant au contrôleur index
    // (contrôleur par défaut)
    class IndexController extends Zend_Controller_Action
    {
    	function init()
    	{
    		$this->initView();
    		$this->view->baseUrl = $this->_request->getBaseUrl();
    		$this->view->user = Zend_Auth::getInstance()->getIdentity();
    	}
    	//action éxécuté avant toutes les autres, permet de rediriger l'utilisateur 
    	// sur l'authentification si celui ci n'est pas identifié
    	function preDispatch()
    	{
    		$auth = Zend_Auth::getInstance();
     
    		if (!$auth->hasIdentity()) {
    			$this->_redirect('auth/login');
    		}
    	}
    	public function indexAction()	{
    		// on donne le titre Mes Albums à la page
    	    $this->view->title = "Mes Albums";
    	    // on l'envoi à la page
    	    $this->view->headTitle($this->view->title, 'PREPEND');
    	    // on crée une nouvelle instance de la classe Albums
    	    $albums = new Application_Model_DbTable_Albums();
    	    // on lui donne le contenu de ce qu'on récupère de la BD
    	    $this->view->albums = $albums->fetchAll();
    	}
    	function ajouterAction()	{
    	    $this->view->title = "Ajouter un nouvel album";
    	    $this->view->headTitle($this->view->title, 'PREPEND');
    		//création d'un nouveau formulaire d'album
    	    $form = new Application_Form_Album();
    	    //donne au boutton le label Ajouter
    	    $form->envoyer->setLabel('Ajouter');
    	    $this->view->form = $form;
    		//si le formulaire à été posté
    	    if ($this->getRequest()->isPost()) {
    	    	//alors on récupère ce qui à été posté
    	        $formData = $this->getRequest()->getPost();
    	        //et on vérifie que le formulaire est valide
    	        if ($form->isValid($formData)) {
    	        	//si le formulaire est valide, on instancie la classe album avec les valeurs du formulaire
    	            $artiste = $form->getValue('artiste');
    	            $titre = $form->getValue('titre');
    	            $albums = new Application_Model_DbTable_Albums();
    	            //et on ajoute un nouvel album
    	            $albums->ajouterAlbum($artiste, $titre);
    				// une fois l'album ajouté, on redirige la page
    	            $this->_redirect('/');
    	        //Si les données du formulaire ne sont pas valides, 
    	        //nous le remplissons avec les données fournies et nous l'affichons à nouveau
    	        } else {
    	            $form->populate($formData);
    	        }
    	    }
    	}
    	public function modifierAction()	{
    		$this->view->title = "Modifier l'album";
    	    $this->view->headTitle($this->view->title, 'PREPEND');
     
    	    $form = new Application_Form_Album();
    	    $form->envoyer->setLabel('Sauvegarder');
    	    $this->view->form = $form;
     
    	    if ($this->getRequest()->isPost()) {
    	        $formData = $this->getRequest()->getPost();
    	        if ($form->isValid($formData)) {
    	            $id = (int)$form->getValue('id');
    	            $artiste = $form->getValue('artiste');
    	            $titre = $form->getValue('titre');
    	            $albums = new Application_Model_DbTable_Albums();
    	            $albums->modifierAlbum($id, $artiste, $titre);
     
    	            $this->_redirect('/');
    	        } else {
    	            $form->populate($formData);
    	        }
    	    } else {
    	        $id = $this->_getParam('id', 0);
    	        if ($id > 0) {
    	            $albums = new Application_Model_DbTable_Albums();
    	            $form->populate($albums->obtenirAlbum($id));
    	        }
    	    }
    	}	
    	public function supprimerAction()	{	
    		$this->view->title = "Supprimer l'album";
    	    $this->view->headTitle($this->view->title, 'PREPEND');
     
    	    if ($this->getRequest()->isPost()) {
    	        $supprimer = $this->getRequest()->getPost('supprimer');
    	        if ($supprimer == 'Oui') {
    	            $id = $this->getRequest()->getPost('id');
    	            $albums = new Application_Model_DbTable_Albums();
    	            $albums->supprimerAlbum($id);
    	        }
     
    	        $this->_redirect('/');
    	    } else {
    	        $id = $this->_getParam('id', 0);
    	        $albums = new Application_Model_DbTable_Albums();
    	        $this->view->album = $albums->obtenirAlbum($id);
    	    }
    	}
    }
     
    ?>
    projet/application/controllers/AuthController.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
    class AuthController extends Zend_Controller_Action
    {
    	function init()
    	{
    		$this->initView();
    		$this->view->baseUrl = $this->_request->getBaseUrl();
    	}
     
    	function indexAction()
    	{
    		$this->_redirect('/');
    	}
    	function loginAction(){
    		$this->view->message = '';
     
    		if ($this->_request->isPost()) {
    			// collect the data from the user
    			Zend_Loader::loadClass('Zend_Filter_StripTags');
    			$f = new Zend_Filter_StripTags();
    			$username = $f->filter($this->_request->getPost('username'));
    			$password = $f->filter($this->_request->getPost('password'));
     
    			if (empty($username)) {
    				$this->view->message = "Veuillez entrer l'utilisateur.";
    			} else {
    				// setup Zend_Auth adapter for a database table
    				Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
    				$dbAdapter = Zend_Registry::get('dbAdapter');
     
    				$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
    				$authAdapter->setTableName('users');
    				$authAdapter->setIdentityColumn('username');
    				$authAdapter->setCredentialColumn('password');
     
    				// Set the input credential values to authenticate against
    				$authAdapter->setIdentity($username);
    				$authAdapter->setCredential($password);
     
    				// do the authentication
    				$auth = Zend_Auth::getInstance();
    				$result = $auth->authenticate($authAdapter);
     
    				if ($result->isValid()) {
    					// success: store database row to auth's storage
    					// system. (Not the password though!)
    					$data = $authAdapter->getResultRowObject(null, 'password');
    					$auth->getStorage()->write($data);
    					$this->_redirect('/');
    				} else {
    					// failure: clear database row from session
    					$this->view->message = 'Authentification échouée.';
    				}
    			}
    		}
    		$this->view->title = "Authentification";
    		$this->render();
    	}
    }
    et enfin projet/application/configs/application.ini :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    [production]
    phpSettings.date.timezone = "Europe/Paris"
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
     
    resource.db.adapter = PDO_MYSQL
    resource.db.params.host = localhost
    resource.db.params.username = username
    resource.db.params.password = password
    resource.db.params.dbname = projet
     
    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 = 1
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/"
    resources.view[] =
     
    [dev]
    phpSettings.date.timezone = "Europe/Paris"
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    resource.db.adapter = PDO_MYSQL
    resource.db.params.host = localhost
    resource.db.params.username = username
    resource.db.params.password = password
    resource.db.params.dbname = projet
     
    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 = 1
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/"
    resources.view[] =
    et voici mon erreur :

    Catchable fatal error: Argument 1 passed to Zend_Auth_Adapter_DbTable::__construct() must be an instance of Zend_Db_Adapter_Abstract, instance of Zend_Config_Ini given, called in C:\wamp\www\projet\application\controllers\AuthController.php on line 31 and defined in C:\wamp\www\projet\library\Zend\Auth\Adapter\DbTable.php on line 128

    Je vois pourquoi j'ai l'erreur, je donne pas la bonne instance au constructeur de Zend_Auth_Adapter_DbTable cependant c'est ce qu'ils semblent faire dans le tutoriel. Je me sent vraiment déboussolé.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Il y a une mauvaise manup dans ton fichier "projet/public/index.php", je m'explique :

    Dans "projet/public/index.php" tu as ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //on est en mode dev : developpeur ou prod : production
    	define('APP_MODE', 'dev');
    	// Chargement de la configuration
    	$config = new Zend_Config_Ini(APPLICATION_PATH .'/configs/application.ini', APP_MODE);
    	$registry = Zend_Registry::getInstance();
    	$registry->set('dbAdapter', $config);
    La dernière ligne de code "$registry->set('dbAdapter', $config)" tu as affecté au Registry une variable dbAdapter qui contient une instance de la classe Zend_Config_Ini et c'est la l'erreur !
    Catchable fatal error: Argument 1 passed to Zend_Auth_Adapter_DbTable::__construct() must be an instance of Zend_Db_Adapter_Abstract, instance of Zend_Config_Ini given, called in C:\wamp\www\projet\application\controllers\AuthController.php on line 31 and defined in C:\wamp\www\projet\library\Zend\Auth\Adapter\DbTable.php on line 128
    La classe Zend_Auth_Adapter_DbTable accepte un objet de la classe Zend_Db_Adapter_Abstract or tu as lui passé un objet de la classe Zend_Config_Ini .

    Solution:
    1 - Modifier la ligne : $registry->set('dbAdapter', $config), remplacer $config par $dbAdapter.
    2 - Déplacer cette ligne après setup database.

    Enfin tu va avoir quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    //on est en mode dev : developpeur ou prod : production
    	define('APP_MODE', 'dev');
    	// Chargement de la configuration
    	$config = new Zend_Config_Ini(APPLICATION_PATH .'/configs/application.ini', APP_MODE);
    	$registry = Zend_Registry::getInstance();
     
    	// Mise en place de la BDD
    	$db = Zend_Db::factory($config->resource->db);
    	Zend_Db_Table::setDefaultAdapter($db);
     
     
    	// setup database
    	$dbAdapter = Zend_Db::factory($config->resource->db->adapter, array(
        'host'     => $config->resource->db->params->host,
        'username' => $config->resource->db->params->username,
        'password' => $config->resource->db->params->password,
        'dbname'   => $config->resource->db->params->dbname
    ));
    $registry->set('dbAdapter', $dbAdapter );
    Et voilà!

  12. #12
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Excuse moi pour le temps de réponse, effectivement ça marche nickel.

    Excuse encore ma bêtise mais c'est pas évident de débuter Zend ^^ surtout que j'ai peu d'expérience Mvc (un peu fait en Java)

    Je te remercie sincèrement mille fois l'ami, je te dit à bientôt au prochain souci

  13. #13
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    pas de quoi. Tu es le bienvenue
    J'attends ton prochain souci ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. Réponses: 1
    Dernier message: 02/12/2013, 18h59
  3. [AC-2000] Barre de défilement pour voyager entre enregistrements
    Par DamKre dans le forum IHM
    Réponses: 23
    Dernier message: 15/04/2010, 21h56
  4. [ netstat ] surveillance entre machines pour demon mysql
    Par gogozep001 dans le forum Développement
    Réponses: 2
    Dernier message: 28/08/2003, 11h05
  5. LIKE de tout ce qui n'est pas compris entre a<-&
    Par DjinnS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/07/2003, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo