Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-03-2007 17:02:56

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

probleme avec le ZF 0.9.0

Je suis entrain de passer d'une version inconnue (0.4.x il me semble) vers la 0.9.0 beta. Je précise que l'appli fonctionne très bien avec cette version de ZF (l'inconnue).

J'ai quelques soucis de portabilité du code. Certains problèmes ont été résolus avec votre aide smile

Il m'en reste toutes fois un que je n'arrive pas à résoudre.

j'ai une structure MVC comme suit :

/appli/htdocs_appli : pour tout ce qui est accessible par le web (js, css, images et index.php)
/appli/php_commun/zend : pour ZF
/appli/php_appli/controleur : pour les controleurs
/appli/php_appli/modele : pour la partie modele dans lequel, j'ai un TrucModel.php (pour l'objet en lui même), un TrucPersist.php (pour la couche de persistance) et TrucTable.php (pour l'accés à la BDD elle même)
/appli/php_appli/vue : pour les vues

Cela reste assez classique il me semble.

Avant, tout ce qui était dans le index.php était accessible par tous les autres scripts. A savoir, si je faisais un Zend:loadClass("truc", "/rep/de/la/class"); cette class était accessible dans tous mes scripts.

Après avoir remplacé tous mes Zend::loadClass par des Zend_Loader::loadClass et autres joyeuseté, j'en arrive à me préoccuper de la BDD. Et c'est là que ça ne fonctionne plus comme avant sad

J'utilise le Zend_Db_Table pour accéder à mes tables.

J'ai une belle Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No object of type Zend_Db_Adapter_Abstract has been specified' alors que j'ai bien fait un Zend_Db_Table::setDefaultAdapter($db) et que ça fonctionnait très bien avant.

Je pense que cela vient d'un problème de portée des variables, mais je ne m'explique pas pourquoi ça fonctionnait bien avec la version xxx et plus avec la version 0.9.0

Ce qui me fait dire que c'est un problème de portée, c'est que j'ai fait un Zend_Registry::set() d'un variable et que si je fais, dans mon script TrucTable.php, Zend_registry::get('ma_variable') et bien ça m'envois une exception Fatal error: Uncaught exception 'Zend_Exception' with message 'No entry is registered for key 'config''.

Voila, si vous avez des idées, elles sont les bienvenues

Hors ligne

 

#2 22-03-2007 17:24:04

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

Re: probleme avec le ZF 0.9.0

Bonjour,

Je n'utilise pas le defaultAdapter, mais la fonction que tu utilises n'existe plus dans Zend_Db_Table en 0.9.

Dans la version 0.9, il semble qu'elle ait migré dans Zend_Db_Table_Abstract.
Essaye : Zend_Db_Table_Abstract::setDefaultAdapter($db);

La documentation sur le site de Zend n'est pas à jour à ce niveau.

Dis nous si ça fonctionne,
A+, Philippe


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

Hors ligne

 

#3 22-03-2007 17:49:26

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: probleme avec le ZF 0.9.0

J'ai essayé et j'ai la même erreur.

Ce que je ne comprend pas, c'est que les class chargées avec Zend_Loader::loadClass dans le index.php ne sont plus visibles dans les autres scripts.

Hors ligne

 

#4 22-03-2007 18:03:50

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

Re: probleme avec le ZF 0.9.0

Ca c'est super bizarre. Chez moi, je n'ai aucun problème à ce niveau avec Zend_Loader.

Par contre pour ton erreur :
Uncaught exception 'Zend_Db_Table_Exception' with message 'No object of type Zend_Db_Adapter_Abstract has been specified'

J'ai fouillé dans le code, elle est envoyée par la classe Zend_Db_Table_Abstract quand son $_db interne n'est pas une instance de Zend_Db_Adapter_Abstract.
Or si tu as fait Zend_Db_Table_Abstract::setDefaultAdapter($db); dans ton index.php, il va automatiquement récupérer ce $db là.

Est-ce que tu as bien vérifié que ton $db était bien défini ?

Sinon là j'avoue, je suis un peu sec...


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

Hors ligne

 

#5 22-03-2007 18:05:19

rod
Administrateur
Lieu: Tours
Date d'inscription: 01-03-2007
Messages: 97
Site web

Re: probleme avec le ZF 0.9.0

Attention y à quelques bugs dans la version 0.9 (corrigés sur le SVN et corrigés dans la futur version 0.9.1) va jeter un coup d'oeil sur : http://framework.zend.com/issues/secure/Dashboard.jspa

Hors ligne

 

#6 22-03-2007 18:13:11

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: probleme avec le ZF 0.9.0

Je vais chercher un peu plus et je vous tiens au courant. Je pense que je vais mettre une nightly.

Hors ligne

 

#7 23-03-2007 09:10:34

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: probleme avec le ZF 0.9.0

Voila, j'ai trouvé d'où venait mon problème (tout n'est pas résolu mais j'avance)

Bêtement, j'ai vu que, pour les contrôleurs, il fallait utiliser la fonction init() plutôt que la fonction __construct(). J'ai donc changer tous les __construct en init dans mon projet smile ce qui fait que pour mes class autres que contrôleur, je les ai aussi changées smile

Maintenant, j'ai remis les __construct où il fallait et ça marchotte car le comportement des fonctions Zend_Db_Table::find() est légèrement différent de la version que j'utilisais.

Si vous avez des idées pour ça, je suis preneur !!

Merci

Hors ligne

 

#8 23-03-2007 09:58:04

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: probleme avec le ZF 0.9.0

Bon, en ce qui concerne les fonctions find() de Zend_Db_Table elles fournissent un Zend_Db_Table_Rowset tout le temps même si on ne met qu'un id dans le find() contrairement à ce qui est dit dans la doc (même l'anglaise).

Pour avoir la ligne courante, il suffit de faire comme ça :

Code:

$lignes = parent::find($id);
$ligne = $lignes->current();

Pour une table :
contact {
ct_id INTEGER,
ct_nom VARCHAR(30)
}

on accède alors aux champs :

Code:

$ligne->ct_id
$ligne->ct_nom

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