Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-06-2012 16:53:14

Neka
Membre
Date d'inscription: 19-06-2012
Messages: 13

[résolu][Zend_Db][1.11.11] Afficher nom clé étrangère

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.

Code:

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

Code:

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

Code:

<table>
    <tr>
        <th>Nom</th>
        <th>Prenom</th>
        <th>Type</th>
        <th>&nbsp;</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

 

#2 19-06-2012 20:51:11

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [résolu][Zend_Db][1.11.11] Afficher nom clé étrangère

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

 

#3 19-06-2012 21:19:25

Neka
Membre
Date d'inscription: 19-06-2012
Messages: 13

Re: [résolu][Zend_Db][1.11.11] Afficher nom clé étrangère

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

Code:

class Application_Model_DbTable_TPersonneRow extends Zend_Db_Table_Row
{    

    public function getType(){
    $type = $this->findParentRow('Application_Model_DbTable_TType');
   return $type;
  }

TPersonne.php

Code:

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

Code:

<?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>&nbsp;</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

 

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