Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Mes 2 tables sont les suivantes
personne(id_personne,..,#id_type)
type(id_type,zone_type)
Je voudrais donc afficher le nom du type et non plus l'id.
J'ai une erreur Message: Unrecognized method 'get_Type()' .
#0 C:\Program Files (x86)\wamp\www\tuto\application\views\scripts\administrateur\index.phtml(17): Zend_Db_Table_Row_Abstract->__call('get_Type', Array)
#1 C:\Program Files (x86)\wamp\www\tuto\application\views\scripts\administrateur\index.phtml(17): Application_Model_DbTable_TPersonneRow->get_Type()
...
Je ne comprends pas d'où viens mon erreur vu que j'ai créer get_Type dans la class Row
Je début je n'ai pas encore bien compris le principe des liaisons.
TPersonne class Application_Model_DbTable_TPersonne extends Zend_Db_Table_Abstract { protected $_name = 'personne'; protected $_primary = 'id_personne'; protected $_sequence = false; // clés primaire non auto-incrémentée protected $_referenceMap = array ( 'type' => array( 'columns' => 'id_type', 'refTableClass' => 'type', )); protected $_rowClass = 'Application_Model_DbTable_TPersonneRow';
TPersonneRow
class Application_Model_DbTable_TPersonneRow extends Zend_Db_Table_Row_Abstract { public function getType(){ $type = $this->findParentRow('type'); return $type; } public function getNbType(){ // TODO return -1; } }
index.phtml
<table> <tr> <th>Nom</th> <th>Prenom</th> <th>Type</th> <th> </th> </tr> <?php foreach($this->Personnes as $personne) : ?> <tr> <td><?php echo $this->escape($personne->nom_personne);?></td> <td><?php echo $this->escape($personne->prenom_personne);?></td> <td><?php echo $this->escape($personne->/get_Type()->/id_type);?></td> <!-- remplacer l'id par le nom du type--> <td> <a href="<?php echo $this->url(array('controller'=>'administrateur', 'modifier', 'action'=>'modifier', 'id_personne'=>$personne->id_personne));?>">Modifier</a> <td> </td> </tr> <?php endforeach; ?> </table>
Merci de me donner un coup de main.
Dernière modification par Neka (19-06-2012 21:20:57)
Hors ligne
getType(à ou get_Type() ?
Par ailleurs, get_Type() est une notation peu conventionnel, soit du camel case, soit des underscores mais les deux c'est bizarre.
Hors ligne
Merci shadypierre,
en effet c'était un problème au niveau du nom de la méthode que j'ai créer et celle que j'appelais. J'ai tellement eut le nez toute la journée dans le code que je n'ai pas vu cette erreur vraiment stupide.
Et puis le comble je laissais id_zone au lieu de mettre nom_zone.
Je mets mon code donc corrigé. Si ça peut dépanner quelqu'un.
TPersonneRow
class Application_Model_DbTable_TPersonneRow extends Zend_Db_Table_Row { public function getType(){ $type = $this->findParentRow('Application_Model_DbTable_TType'); return $type; }
TPersonne.php
class Application_Model_DbTable_TPersonne extends Zend_Db_Table_Abstract { protected $_name = 'personne'; protected $_primary = 'id_personne'; protected $_sequence = false; // clés primaire non auto-incrémentée protected $_referenceMap = array ( 'type' => array( 'columns' => 'id_type', 'refTableClass' => 'Application_Model_DbTable_TType', )); protected $_rowClass = 'Application_Model_DbTable_TPersonneRow';
index.phtlm
<?php $this->title = "Liste des personnes pour l'adminstrateur"; $this->headTitle($this->title); ?> <table> <tr> <th>Nom</th> <th>Prenom</th> <th>Type</th> <th> </th> </tr> <?php foreach($this->Personnes as $personne) : ?> <tr> <td><?php echo $this->escape($personne->nom_personne);?></td> <td><?php echo $this->escape($personne->prenom_personne);?></td> <td><?php echo $this->escape($personne->getType()->nom_type);?></td> <!-- remplacer l'id par le nom du type--> <td> <a href="<?php echo $this->url(array('controller'=>'administrateur', 'modifier', 'action'=>'modifier', 'id_personne'=>$personne->id_personne));?>">Modifier</a> <td> </td> </tr> <?php endforeach; ?> </table>
Encore merci de cette aide précieuse !
Hors ligne
Pages: 1