Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-09-2009 14:45:53

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Impossible d'étendre un modèle avec Zend_Db_Table

Bonjour,

J'essaie d'étendre un modèle le plus basiquement du monde avec Zend_Db_Table. Le problème est que je me retrouve avec un message "Application Error" et rien d'autre. J'ai pourtant déjà réalisé une application avec Zend et ce problème ne s'est pas présenté ça doit donc être une erreur toute bête ou il y a quelque chose que je n'ai pas compris. La différence avec la dernière fois c'est que je travaille avec les modules:

Le code du modèle (on travaille dans le module Polls, les modèles sont préfixés par "Model") jusque là pas de problème:

Code:

class Polls_Model_Contacts extends Zend_Db_Table
{
    protected $_name = 'polls_contacts';
    protected $_primary = 'id';
}

Ensuite dans mon IndexController:

Code:

public function contactAction()
    {
    if ($this->getRequest()->isXmlHttpRequest()) {
        
        $mail = $this->_request->getParam('mail');
        $contacts = new Polls_Model_Contacts(); //apparemment le problème vient de cette ligne...
        $row = $contacts->createRow();
        $row->mail = 'mail';
        $row->save();
    }
  
    
    }

Dans le fichier Bootstrap.php dans le dossier application j'ai:

Code:

protected function _initDb()
    {
    
        $config = new Zend_Config($this->getOptions());
        
        try{  
             $db = Zend_Db::factory($config->resources->db);  
             
             $db->getConnection();
         }catch ( Exception $e ) {  
             exit( $e -> getMessage() );  
         }
              
         Zend_Registry::set( 'dbAdapter', $db );
         return $db;
    }

Je tiens à préciser que j'arrive à accèder à la base de données par une autre table du programme et à afficher les tuples. Le problème est vraiment localisé dans le fait que j'étend Zend_Db_Table, du moins à première vue.

Merci de votre aide.


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#2 02-09-2009 14:53:32

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: Impossible d'étendre un modèle avec Zend_Db_Table

Peut être que tu as oublié :

Code:

Zend_Db_Table_Abstract::setDefaultAdapter($db);

Hors ligne

 

#3 02-09-2009 15:03:05

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Re: Impossible d'étendre un modèle avec Zend_Db_Table

Merci, mais ça doit se mettre à quel niveau cette ligne, avant la création de l'objet Contacts()? Car dans tous les cas que j'ai vu jusqu'à présent je n'avais pas à mettre cette ligne mais je vais tenter le coup.


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#4 02-09-2009 15:15:20

Tavarez
Membre
Lieu: Valenciennes
Date d'inscription: 18-07-2008
Messages: 56

Re: Impossible d'étendre un modèle avec Zend_Db_Table

Le problème est résolu, il fallait bien recupérer l'adaptateur dans le registry puis ajouter ta ligne:

Code:

public function contactAction()
    {
    if ($this->getRequest()->isXmlHttpRequest()) {
        
        //$mail = $this->_request->getParam('mail');
        Zend_Db_Table_Abstract::setDefaultAdapter($db);
        $contacts = new Polls_Model_Contacts();
                $row = $contacts->createRow();
                $row->mail = 'mail';
                $row->save();
      }
  
    
    }

Merci pour ton aide, c'est bien ce que je pensais c'était tout bête :p.


Il n'y a qu'en faisant des erreurs qu'on apprend...

Hors ligne

 

#5 02-09-2009 16:23:07

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Impossible d'étendre un modèle avec Zend_Db_Table

Hello,

Tu devrais mettre cette ligne dans _initDb :

Code:

    protected function _initDb()
    {
    
        $config = new Zend_Config($this->getOptions());
        
        try{  
             $db = Zend_Db::factory($config->resources->db);  
            Zend_Db_Table_Abstract::setDefaultAdapter($db);             
             $db->getConnection();
         }catch ( Exception $e ) {  
             exit( $e -> getMessage() );  
         }
              
         Zend_Registry::set( 'dbAdapter', $db );
         return $db;
    }

Elle serait alors valable pour toutes tes tables et c'est, de toute façon, son but wink


A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 03-09-2009 11:11:40

lesauf
Membre
Lieu: Yaoundé - Cameroun
Date d'inscription: 29-11-2007
Messages: 52
Site web

Re: Impossible d'étendre un modèle avec Zend_Db_Table

Dans application.ini j'ai

Code:

resources.db.isDefaultTableAdapter = true

.
Ca ne ferait pas la même chose?

Hors ligne

 

#7 03-09-2009 11:21:03

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Impossible d'étendre un modèle avec Zend_Db_Table

Hello,

Comme tu nomme ta fonction _initDb, je crois que tu écrase le fonctionnement normal et donc tu ne prends pas en compte la partie ini (à vérifier cependant).

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#8 03-09-2009 12:08:40

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: Impossible d'étendre un modèle avec Zend_Db_Table

mikaelkael a écrit:

Hello,

Comme tu nomme ta fonction _initDb, je crois que tu écrase le fonctionnement normal et donc tu ne prends pas en compte la partie ini (à vérifier cependant).

A+

Oui je confirme j'ai pu en faire l'expérience, à mes dépends ...


veni, vidi, riendi
Vive les lapins-antilopes !

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