Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-05-2012 17:05:09

stevouwill
Nouveau membre
Date d'inscription: 12-05-2012
Messages: 4

comment afficher les row avec Zend_Db_Table_Row_Abstract

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

Code:

 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

Code:

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;
    }
    
    
}

Code:

<?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

Code:

<?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

Code:

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

 

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