Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour, s'il vous je dispose de 2 tables( type, election) dont la composition est la suivante: Type(idtype,libelle); election(idelection, type_idtype, date);
NB: type_idtype est la clé étrangère référençant la table type.
Je voudrai afficher à l’écran la liste des élections mais en remplaçant le champ type_idtype par libelle donc en quelque sorte je voudrai avoir une liste qui ressemble à ceci: (1 sénatoriale 12-12-12).
Apres avoir lu dans certains tutoriels on ma fait comprendre que pour y arriver il faudrait creer une classe row qui étend Zend_Db_Table_Row_Abstract. j'ai créer la classe rowelect
class Application_Model_Rowelect extends Zend_Db_Table_Row_Abstract { public function getType() { //$election=$this->findParentType(); $election = $this->findParentRow('Type', 'Type1'); // les arguments de findParentRow : // 'Type' -> c'est la table // 'Type1' -> c'est le rôle défini dans $_referenceMap de Election.php return $election; } }
et puis j'ai donc modifier les classes Type et Election de la manniere suivante
class Application_Model_DbTable_Type extends Zend_Db_Table_Abstract { protected $_name = 'type'; protected $_primary = 'idtype'; protected $_rowClass = 'Application_Model_Rowelect'; protected $_dependentTables = array('Election'); public function getOptions() { $select = $this->select() //->from($this->_name, array('idtype', 'nom')) ->from($this->_name,array('libelle')) ->order('idtype ASC'); $options = $this->getAdapter()->fetchAll($select); return $options; } }
<?php //require_once Application_Model_DbTable_Rowelect; class Application_Model_DbTable_Election extends Zend_Db_Table_Abstract { protected $_name = 'election'; protected $_rowClass = 'Application_Model_Rowelect'; protected $_primary = 'idelection'; protected $_referenceMap = array( 'Type1' => array( 'columns' => 'type_idtype', 'refTableClass' => 'Type', 'refColumns' => 'idtype' ) ); public function getOutputFilter($data = null) { $type = new Type(); $type_row = $type->getOptions(); // add other filters $filters = array( 'libelle' => array(array('ArrayValue', $type_row)) ); $of = new Zend_Filter_Input($filters, null, $data); $of->addFilterPrefixPath('My_Filter', 'My/Filter/'); return $of; }
et puis j'ai modifier la vue de election de la manière suivante
<?php $this->title = 'Liste des elections'; $this->headTitle($this->title); ?> <?php foreach($this->election as $election) : ?> <td><?php echo $this->escape($election->idelection);?></td> <td><?php echo $this->escape($election->getType()->libelle->setIntegrityCheck(false));?></td> <td><?php echo $this->escape($election->date);?></td>
Mais apres tout ceci je n'est pas de résultats satisfaisant à l'écran mais j'ai plus tôt un message du genre
Liste des elections An error occurred Application error
j'utilise apache de zend server. s'il vous plais je veut de l'aide pour ce blocus
Hors ligne
Pages: 1