Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-04-2012 19:19:23

enneite
Membre
Date d'inscription: 25-04-2012
Messages: 12

Problème pour étendre Zend_Db_Table_Row_Abstract

j'aimerais savoir comment faire pour créer des classes personnalisées pour les "row" en étendant Zend_Db_Table_Row_Abstract à des classes personnalisées, mais je n'y arrive pas correctement.

Voici mon problème :
J'ai une classes faisant des opérations sur une table SQL "annonces" :

class Model_DbTable_Annonces extends Zend_Db_Table
{
    protected $_name = 'annonces';
    protected $_primary ='id_annonce';

//si on décommente ce code la méthode Model_Row_Annonce::createRow() échoue !!
    //protected $_rowClass = 'Model_Row_Annonce';
}

class Model_Row_Annonce extends Zend_Db_Table_Row_Abstract{

}


Voici une code que j'appelle dans un controlleur :

//le code cidessous fonctionne lorsque
//protected $_rowClass = 'Model_Row_Annonce'; est mis en commentaire dans la classe Model_Dbtable_Annonces
//Sinon il ne fonctionne pas
$annonces = new Model_Dbtable_Annonces();
$annonce = $annonces->createRow();
$annonce->save();

l'erreur renvoyée est :
Fatal error: Call to a member function insert() on a non-object in ...\library\Zend\Db\Table\Row\Abstract.php on line 467
la ligne en question étant est : $primaryKey = $this->_getTable()->insert($data);

Du coup, il faudrait initialiser la propriété $_table dans ma classe personnalisée Model_Row_Annonce, mais après plusieurs essais infructueux, je ne sais plus comment faire.

Si quelqu'un peut m'expliquer comment étendre des classes de "row" correctement, je suis preneur.
Merci d'avance.

Hors ligne

 

#2 26-04-2012 20:52:01

yelmontaser
Nouveau membre
Date d'inscription: 26-06-2009
Messages: 8
Site web

Re: Problème pour étendre Zend_Db_Table_Row_Abstract

ta classe Model_DbTable_Annonces doit hériter de Zend_Db_Table_Abstract et non Zend_Db_Table.

Hors ligne

 

#3 02-05-2012 09:57:14

enneite
Membre
Date d'inscription: 25-04-2012
Messages: 12

Re: Problème pour étendre Zend_Db_Table_Row_Abstract

Merci du conseil, j'ai changé l'extension, cependant mon problème persiste.

Voici ce que retourne :
$annonce = $annonces->createRow();
Zend_Debug::dump($annonce);


object(Model_Row_Annonce)#89 (8) {
  ["_data":protected] => array(0) {
  }
  ["_cleanData":protected] => array(0) {
  }
  ["_modifiedFields":protected] => array(0) {
  }
  ["_table":protected] => NULL
  ["_connected":protected] => bool(true)
  ["_readOnly":protected] => bool(false)
  ["_tableClass":protected] => NULL
  ["_primary":protected] => NULL
}

L'erreur reste la même :
Fatal error: Call to a member function insert() on a non-object in ...\library\Zend\Db\Table\Row\Abstract.php on line 467

Hors ligne

 

#4 02-05-2012 11:17:28

enneite
Membre
Date d'inscription: 25-04-2012
Messages: 12

Re: Problème pour étendre Zend_Db_Table_Row_Abstract

Alors, j'ai trouvé, en fait j'avais essayé d'étendre et de redéfinir le contructeur :



function __construct(){
// parent::__construct() ;
/// ...
//
}

Cela faisait buguer a construction de l'objet, donc conclusion :

Ne pas essayer de redéfinir le constructeur (même en appelant parent::__contsruct() lorsque le parent est Zend_Db_Table_Row

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