Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-04-2011 14:31:08

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Probleme de mise en place pour un débutant

Bonjour à tous,
je viens enfin de me plonger dans le zend ... alors si les débutants vous rebutent, passez au post suivant:D
J'avais acheté le livre de Christophe Haro mais nouvelle version oblige, impossible de s'y référer ...

J'ai donc commencé hier avec ce tuto :
http://s-jdm.developpez.com/tutoriels/p … work-1-10/

Tout se passe bien , installation, parametrage mais arrivé au chapitre XI. Lister les albums
alors que j'ai scrupuleusement respecté les étapes, je n'arrive pas à lister les albums :

Code:

An error occurred
Application error
Exception information:

Message: No adapter found for Application_Model_DbTable_Albums
Stack trace:

#0 C:\wamp\www\tutoriel-zf\library\Zend\Db\Table\Abstract.php(739): Zend_Db_Table_Abstract->_setupDatabaseAdapter()
#1 C:\wamp\www\tutoriel-zf\library\Zend\Db\Table\Abstract.php(268): Zend_Db_Table_Abstract->_setup()
#2 C:\wamp\www\tutoriel-zf\application\controllers\IndexController.php(13): Zend_Db_Table_Abstract->__construct()
#3 C:\wamp\www\tutoriel-zf\library\Zend\Controller\Action.php(513): IndexController->indexAction()
#4 C:\wamp\www\tutoriel-zf\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('indexAction')
#5 C:\wamp\www\tutoriel-zf\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#6 C:\wamp\www\tutoriel-zf\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#7 C:\wamp\www\tutoriel-zf\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#8 C:\wamp\www\tutoriel-zf\public\index.php(26): Zend_Application->run()
#9 {main}  

Request Parameters:

array (
  'controller' => 'index',
  'action' => 'index',
  'module' => 'default',
)

J'ai beau regarder mes fichiers modifiés grace au tuto, je ne vois pas d'erreur...
Quelqu'un peut il m'aider?

Hors ligne

 

#2 27-04-2011 14:44:39

Zenkken
Membre
Date d'inscription: 06-04-2011
Messages: 21

Re: Probleme de mise en place pour un débutant

Tu as bien défini toutes les informations relatives à la BD dans ton fichier de config ?

Hors ligne

 

#3 27-04-2011 14:54:46

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Et bien malheureusement oui, comme on est en local je mets des mots de passe particulièrement... simples :

Code:

ressources.db.adapter = PDO_MYSQL
ressources.db.params.host = localhost
ressources.db.params.username = utilisateur
ressources.db.params.password = utilisateur
ressources.db.params.dbname = tutoriel-zf
ressources.view.doctype = "XHTML1_STRICT"

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

Voila ce que j'ai rajouté dans la section [production]
sachant que mes autres appli accèdent bien à la BD avec cet" utilisateur"

Hors ligne

 

#4 27-04-2011 15:04:22

Zenkken
Membre
Date d'inscription: 06-04-2011
Messages: 21

Re: Probleme de mise en place pour un débutant

As-tu pensé à définir l'adaptateur par défaut ?

Code:

Zend_Db_Table::setDefaultAdapter($nomDeTaVariable);

Hors ligne

 

#5 27-04-2011 15:08:09

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Euh non ...
en relisant la doc, au chapitre VIII A
le tuto dit  :
Vous devez évidemment utiliser votre nom d'utilisateur, votre mot de passe et votre nom de base de données, pas les miens ! La connexion à la base de données sera maintenant établie automatiquement pour nous et l'adaptateur par défaut pour Zend_Db_Table sera défini.

Dernière modification par manuzed78 (27-04-2011 15:08:43)

Hors ligne

 

#6 27-04-2011 15:08:23

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Probleme de mise en place pour un débutant

manuzed78 a écrit:

Voila ce que j'ai rajouté dans la section [production]

Et ton appli est-elle configuré pour utiliser la config de production?

Hors ligne

 

#7 27-04-2011 15:11:39

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Ha ben non, ce doit etre ca le problème, effectivement
à un moment du tuto, on se met en développement !
et effectivement dans le .htacces il y a :
SetEnv APPLICATION_ENV development

mais alors quand on est en developpement, quels sont les avantages et ou dois je mettre le code d'acces à la BDD ?

Dernière modification par manuzed78 (27-04-2011 15:14:57)

Hors ligne

 

#8 27-04-2011 15:21:17

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Probleme de mise en place pour un débutant

Cela permet de définir plusieurs 'mode' de fonctionnement, ainsi tu peux définir par exemple qu'en environnement de dév tu affiche les erreurs php, mais pas en environnement de prod, etc... Tu peux aussi définir différente BDD par exemple.

http://framework.zend.com/manual/en/zen … start.html

Dernière modification par shadypierre (27-04-2011 15:22:19)

Hors ligne

 

#9 27-04-2011 16:03:03

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Bon et bien ce tuto donne la meme chose que le mien si ce n'est un
resources.layout.layout = "layout"

dans application.ini qui n'est pas dans mon tuto

A la fin de ton tuto, Shadypierre, ils créent une vue alors que moi mon bootstrap est vide...

J'ai essayé dans mon application.ini de mettre les même parametres que dans [production]

Code:

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

ressources.db.adapter = PDO_MYSQL
ressources.db.params.host = localhost
ressources.db.params.username = utilisateur
ressources.db.params.password = utilisateur
ressources.db.params.dbname = tutoriel-zf
ressources.view.doctype = "XHTML1_STRICT"

Mais cela ne change rien ...

Hors ligne

 

#10 27-04-2011 16:07:41

Zenkken
Membre
Date d'inscription: 06-04-2011
Messages: 21

Re: Probleme de mise en place pour un débutant

Et en mettant juste

Code:

[production]

Hors ligne

 

#11 27-04-2011 16:11:42

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Zenkken a écrit:

Et en mettant juste

Code:

[production]

Nan, en fait voila le fichier au complet :

Code:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
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

ressources.db.adapter = PDO_MYSQL
ressources.db.params.host = localhost
ressources.db.params.username = utilisateur
ressources.db.params.password = utilisateur
ressources.db.params.dbname = tutoriel-zf
ressources.view.doctype = "XHTML1_STRICT"

; Ajout du site  resources.layout.layout = "layout" 
resources.layout.layout = "layout"    
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
phpSettings.date.timezone = "Europe/Paris"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

Hors ligne

 

#12 27-04-2011 16:18:37

Zenkken
Membre
Date d'inscription: 06-04-2011
Messages: 21

Re: Probleme de mise en place pour un débutant

Je maintiens mon idée de départ alors.
Après shadypierre a plus d'expérience que moi à n'en pas douter donc je le laisserai ou d'autres répondre afin d'éviter de t'orienter vers de mauvaises directions ou mauvais conseils.

En attendant essaie

Code:

Dans index.php (celui de base)

/* ------------------------------ */
/* CONNEXION A LA BASE DE DONNEES */  
/* ------------------------------ */  
                    
// Chargement automatique de Zend_Db_Adapter_Pdo_Mysql, et instanciation.
$config = new Zend_Config_Ini('chemin/vers/tonfichierdeconfig.ini', 'production');

$db = Zend_Db::factory($config->database->adapter,array(
  'host'      => $config->database->params->host, 
  'username'  => $config->database->params->username,
  'password'  => $config->database->params->password,
  'dbname'    => $config->database->params->dbname,
    )
);

// En faire la connexion par defaut
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db); 

[...]

$application->bootstrap()
            ->run();

Hors ligne

 

#13 27-04-2011 16:40:52

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Fatal error: Class 'Zend_Config_Ini' not found in C:\wamp\www\tutoriel-zf\public\index.php on line 8

ce doit etre un probleme de version, ayant commencé aujourd'hui j'ai téléchargé la derniere version de ZF 1.11.5  ...

Hors ligne

 

#14 27-04-2011 17:21:13

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Zenkken a écrit:

As-tu pensé à définir l'adaptateur par défaut ?

Code:

Zend_Db_Table::setDefaultAdapter($nomDeTaVariable);

En fait cette méthode de notation est bonne pour les versions antérieures à la 1.10 il me semble.
Sinon ou dois je  placer l'adaptateur et $nomDeTaVariable correspond à quoi exactement?

Hors ligne

 

#15 28-04-2011 10:44:53

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Probleme de mise en place pour un débutant

Bonjour,

A court terme, essaye la méthode de Zenkken (message #12). Elle répond à ta dernière question.

Ca n'est pas un problème de version. Là dessus, il y a une compatibilité parfaite entre les versions 1.10 et 1.11.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#16 28-04-2011 11:06:07

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Zenkken a écrit:

Je maintiens mon idée de départ alors.
Après shadypierre a plus d'expérience que moi à n'en pas douter donc je le laisserai ou d'autres répondre afin d'éviter de t'orienter vers de mauvaises directions ou mauvais conseils.

Sachant que index.php est dans public et que mon application.ini est dans application/configs, voila donc mon nouveau fichier index.php :

Code:

<?php
/* ------------------------------ */
/* CONNEXION A LA BASE DE DONNEES */  
/* ------------------------------ */  
                    
// Chargement automatique de Zend_Db_Adapter_Pdo_Mysql, et instanciation.
$config = new Zend_Config_Ini('../application/config/application.ini', 'production');

$db = Zend_Db::factory($config->database->adapter,array(
  'host'      => $config->database->params->localhost, 
  'username'  => $config->database->params->utilisateur,
  'password'  => $config->database->params->utilisateur,
  'dbname'    => $config->database->params->tutoriel-zf,
    )
);

// En faire la connexion par defaut
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db); 


$application->bootstrap()
            ->run();

Mais il ne reconnaît pas : Fatal error: Class 'Zend_Config_Ini' not found in C:\wamp\www\tutoriel-zf\public\index.php on line 7 sachant que ma ligne 7 est bien $config = new Zend_Config_Ini('../application/config/application.ini', 'production');

Hors ligne

 

#17 28-04-2011 11:15:42

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Probleme de mise en place pour un débutant

Tu as bien défini l'autoload des classes?

Hors ligne

 

#18 28-04-2011 11:18:19

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

shadypierre a écrit:

Tu as bien défini l'autoload des classes?

Euh .... en français please ;-)

Hors ligne

 

#19 28-04-2011 11:34:24

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Probleme de mise en place pour un débutant

Hors ligne

 

#20 28-04-2011 11:48:47

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

Holala, je suis vraiment dégouté qu'il n'y ai aucun livre ou aucune référence qui reprend tout à la base si ce n'est ce tuto que justement je n'arrive pas à faire fonctionner...
en gros il me faut $autoloader = Zend_Loader_Autoloader::getInstance();
mais à aucun endroit il est dit OU il faut le mettre,
ce qui est sur c'est que ce n'est pas dans index.php
et quand on débute, la logique générale n'est pas encore en place alors on ne peut pas le déduire ou faire fonctionner la logique ;-)

Hors ligne

 

#21 28-04-2011 13:08:31

Sylvain91
Nouveau membre
Lieu: Corbeil-Essonnes
Date d'inscription: 19-02-2009
Messages: 7

Re: Probleme de mise en place pour un débutant

manuzed78 a écrit:

en gros il me faut $autoloader = Zend_Loader_Autoloader::getInstance();
mais à aucun endroit il est dit OU il faut le mettre,
ce qui est sur c'est que ce n'est pas dans index.php

Je sais bien que c'est difficile au début (parfois aussi plus tard...)
Je ne comprends pas pourquoi tu dis que l'initialisation de l'auto-chargement ne doit pas être dans index.php/
C'est au contraire dès le début de l'exécution d'une requête que l'auto-chargement doit être disponible.
Pour ma part je fais :

require_once "../library/Zend/Loader/Autoloader.php";
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('Fox1_');

et ça marche très bien en plaçant ce code dans index.php juste après la définition du chemin de l'application.
Fox1 est le nom du répertoire situé dans library où je place les classes que je développe.

Bon courage !


Formateur - Développeur

Hors ligne

 

#22 28-04-2011 13:38:38

nuxwin
Membre
Lieu: Caen (14)
Date d'inscription: 17-03-2011
Messages: 66

Re: Probleme de mise en place pour un débutant

Bonjour ;

Dans votre fichier de configuration, il vous manque ceci:

Code:

resources.db.isDefaultTableAdapter = true

Et oubliez les "bêtises" dites à propos de l'autoloader qui dans votre cas est chargé automatiquement.

Note: Avec toutes les modifications que vous avez tenté pour faire en sorte que cela fonctionne, je vous recommande de nous poster votre fichier de configuration tel qu'il est actuellement, ainsi que votre fichier index.php.

Cordialement ;

Dernière modification par nuxwin (28-04-2011 15:52:09)

Hors ligne

 

#23 28-04-2011 13:43:29

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

nuxwin a écrit:

Bonjour ;

Dans votre fichier de configuration, il vous manque ceci:

Code:

resources.db.isDefaultTableAdapter = true

Et oubliez les bêtises dites à propos de l'autoloader qui dans votre cas est chargé automatiquement.


Cordialement ;

Merci Nuxwin
mon application.ini ressemble maintenant à ceci :

Code:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
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

ressources.db.adapter = PDO_MYSQL
ressources.db.params.host = localhost
ressources.db.params.username = utilisateur
ressources.db.params.password = utilisateur
ressources.db.params.dbname = tutoriel-zf
ressources.view.doctype = "XHTML1_STRICT"
ressources.db.isDefaultTableAdapter = true

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
phpSettings.date.timezone = "Europe/Paris"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

mais le message est toujours le meme .
Y a t il une place spécifique pour ce paramètre?

Hors ligne

 

#24 28-04-2011 13:49:23

nuxwin
Membre
Lieu: Caen (14)
Date d'inscription: 17-03-2011
Messages: 66

Re: Probleme de mise en place pour un débutant

re ;

Et votre fichier index ? Je vais voir à corriger votre config.

Edit:

Code:

[production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    includePaths.library = APPLICATION_PATH "/../library"

    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"

    appnamespace = "Application"
    autoloadernamespaces[] = "Zend_"

    resources.frontController.env = APPLICATION_ENV
    resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
    resources.frontController.throwExceptions = false
    resources.frontController.params.displayExceptions = 0

    resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
    ressources.view.doctype = "XHTML1_STRICT"
    resources.view.charset = "UTF-8"
    resources.view.contentType = "text/html; charset=utf-8"

    phpSettings.date.timezone = "Europe/Paris"

    resources.db.adapter = "pdo_mysql"
    resources.db.params.charset = "utf8"
    resources.db.params.host = "localhost"
    resources.db.params.username = "user"
    resources.db.params.password = "password"
    resources.db.params.dbname = "tutoriel-zf"
    resources.db.params.profiler = false
    resources.db.isDefaultTableAdapter = true
    ;resources.db.params.persistent = true

[staging : production]

[testing : production]
     phpSettings.display_startup_errors = 1
     phpSettings.display_errors = 1

[development : production]
     phpSettings.display_startup_errors = 1
     phpSettings.display_errors = 1
     resources.frontController.throwExceptions = true
     resources.frontController.params.displayExceptions = 1

Votre fichier index.php please.

Dernière modification par nuxwin (28-04-2011 13:58:32)

Hors ligne

 

#25 28-04-2011 13:57:29

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: Probleme de mise en place pour un débutant

nuxwin a écrit:

Et votre fichier index ? Je vais voir à corriger votre config.

Pour mon index.php
j'ai remis du coup ce qu'il y a dans le tuto à savoir :

Code:

<?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(),
)));

/** 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();

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages