Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-12-2007 15:16:24

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

[résolu][Zend_Db][1.0.3]Garder la connexion en MVC

Bonjour,

J'ai un petit problème pour "porter" ma connexion de classe en classe.
J'utilise le modèle MVC, et j'ai çà dans mes différents fichiers :

index.php :

Code:

$db = Zend_Db::factory($config->database);
Zend_Db_Table::setDefaultAdapter($db);

IndexController.php :

Code:

class IndexController extends Zend_Controller_Action {
    public function indexAction() {
        $users = new Users();
    }

Users.php :

Code:

class Users extends Zend_Db_Table {
    protected $_name = 'users';
}

Et j'obtiens :
Fatal error: Call to a member function describeTable() on a non-object in D:\Dev\projets_PHP\test_zf\library\Zend\Db\Table\Abstract.php on line 595

Si je mets mon $users = new Users() dans mon index, celà fonctionne très bien en revanche.

Geoffrey

Dernière modification par Geoffrey (04-12-2007 14:06:01)

Hors ligne

 

#2 03-12-2007 15:30:27

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

J'ai peut-être mal suivi, mais où est le problème ? :p

Hors ligne

 

#3 03-12-2007 15:56:40

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

Julien a écrit:

J'ai peut-être mal suivi, mais où est le problème ? :p

C'est vrai que j'en ai oublié la question dis donc ... j'ai édité mon message pour rajouter l'erreur que j'obtiens

Dernière modification par Geoffrey (03-12-2007 15:56:55)

Hors ligne

 

#4 03-12-2007 17:42:51

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

Ca, c'est un bug que j'ai remonté et sur lequel je suis en train de travailler ( ZF-2244 ).
En fait, ton adapter est mal passé à la classe Zend_Db_Table.
Vérifie que l'adapter est bien formé (instance de Zend_Db_Adapter) , et qu'il est correctement passé (setDefaultAdapter())

A l'avenir, nous corrigeons ce bug afin d'envoyer une exception ('No adapter found').

Hors ligne

 

#5 03-12-2007 18:51:17

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

Mon adapter doit être bon car si je fais appel à ma classe Users directement dans le fichier index.php, ca marche. Le problème se produit uniquement quand je passe par le controlleur. Je dois oublié de le passer quelque part, mais je ne trouve pas où, j'ai regardé dans la doc et j'ai trouvé comme j'ai mis, rien d'autres sad

Hors ligne

 

#6 03-12-2007 22:09:06

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

Un coup de débuggeur, et t'auras vite compris.
Je vois pas là sinon.

Hors ligne

 

#7 04-12-2007 07:44:44

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

à mettre dans le bootstrap

Code:

            $dbAdapter = Zend_Db::factory($parameters->db, $params);
            Zend_Registry::set('dbAdapter', $dbAdapter);
            Zend_Db_Table::setDefaultAdapter('dbAdapter');

la méthode _setAdapter de Zend_Db_Table_Abstract peu prendre alors en paramètre la clef de la registry

Code:

$tbl = new maTable('dbAdapter');

de même si elle est passé dans le tableau de config du constructeur de table.

si aucun adapter n'est fourni à la table alors Zend_Db_Table_Abstract utilise le defaultAdapter fournit de façon globale à toutes les tables.

Code:

$tbl = new maTable();

A+JYT

Dernière modification par sekaijin (04-12-2007 07:48:57)

Hors ligne

 

#8 04-12-2007 10:05:04

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

Merci pour vos réponses

Je viens d'essayer ta méthode sekaijin, mais celà ne marche toujours pas

dans mon IndexAction, je mets :

Code:

class IndexController extends Zend_Controller_Action {
    public function indexAction() {
        $users = new Users('dbAdapter');
    }
}

et j'obtiens :
Zend_Exception: No entry is registered for key 'dbAdapter' in D:\Dev\projets_PHP\test_zf\library\Zend\Registry.php on line 145

En fait, j'ai l'impression que tout ce que je mets dans mon index.php, mes controlleurs ne s'en servent pas. Je dois merder dans ma déclaration du MVC :

Code:

// Initialisation du controlleur
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('controllers');
$controller->throwExceptions(true);
$controller->setParam("noViewRenderer",true);

// Initialisation du viewRenderer
$view = new Kitpages_View_Smarty();
$view->setEngine($smarty);

// Initialisation du helper
$viewManager = new Kitpages_Controller_Action_Helper_ViewManager();
$viewManager->setView($view);
Zend_Controller_Action_HelperBroker::addHelper($viewManager);

// Démarrage du modèle MVC
$controller->dispatch();

Hors ligne

 

#9 04-12-2007 10:33:48

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

tu n'a pas mis le dbadapter dans ton bootstrap comme je l'ai donné l'adapter n'est donc pas connu

à mettre dans le bootstrap

Code:

            $dbAdapter = Zend_Db::factory($parameters->db, $params);
            Zend_Registry::set('dbAdapter', $dbAdapter);
            Zend_Db_Table::setDefaultAdapter('dbAdapter');

Code:

class IndexController extends Zend_Controller_Action {
    public function indexAction() {
        $users = new Users();
    }
}

A+JYT

Hors ligne

 

#10 04-12-2007 14:02:02

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

sekaijin a écrit:

tu n'a pas mis le dbadapter dans ton bootstrap comme je l'ai donné l'adapter n'est donc pas connu

Si si, il y est, c'est que je n'ai pas copier/coller tout mon code

Hors ligne

 

#11 04-12-2007 14:05:28

Geoffrey
Membre
Lieu: 63
Date d'inscription: 12-04-2007
Messages: 140
Site web

Re: [résolu][Zend_Db][1.0.3]Garder la connexion en MVC

sekaijin, ta réponse précédente m'a fait faire tilt ...

En fait je fais ma connexion à la bdd APRES avoir initialisé le MVC, hors il est évident que si je veux que je MVC se serve de cette connexion, il faut qu'elle soit faite avant ...

Ce n'est donc qu'une erreur d'étourderie qui me prend la tête depuis hier sad


Merci

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