Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-09-2009 14:45:07

gcr01
Membre
Date d'inscription: 28-08-2009
Messages: 17

retour d'un Zend_Paginator

Bonjour,

J'ai ajouté Zned_Paginator pour avoir une liste sur plusieurs pages.
Ca marche bien mais quand je passe une form avec un bouton submit, je retourne au sommaire à la première page.


Dans le sommaire, je click sur un lien qui donne vers un formulaire (pour modifier), et quand je clique sur submit, je vais à la page 1 du sommaire.

Les URL donne :
- $SITE/list/page/20
- $SITE/edit/page/20/id/467

------ le SUBMIT
- $SITE/list


comment faire pour que la form renvoie avec la page

Merci

Hors ligne

 

#2 11-09-2009 14:57:05

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

Re: retour d'un Zend_Paginator

J'ai rencontré ce genre de problème pour créer des filtres sur mes pages à l'aide de formulaire. Je te fourni ma solution peut-être un peu barbare mais qui fonctionne.

Tout d'abord mon tableau avec au debut mon formulaire, l'astuce se trouve dans le lien activé en javascript

Code:

<form id="outils" name="outils" method="post" action="#" >
Trier par : 
<select name="tri" id="tri" onchange="window.location.href='<?php echo $this->baseUrl();?>/Fichier/listeclients/tri/'+this.value+'/filtre/'+$('select#filtre').attr('value')+'/page/<?php echo $page->getCurrentPageNumber();?>'" >
    <?php 
    if($this->tri=="code_identif_cci"){ echo '<option value="code_identif_cci" selected>Code cci</option>'; }else{ echo'<option value="code_identif_cci" >Code cci</option>';}
    if($this->tri=="Formes_juridiques_id"){ echo'<option value="Formes_juridiques_id" selected>Forme juridique</option>'; }else{ echo'<option value="Formes_juridiques_id">Forme juridique</option>';}
    if($this->tri=="nom_complet"){ echo'<option value="nom_complet" selected>Nom</option>'; }else{ echo'<option value="nom_complet">Nom</option>';}
    ?>
</select>
&nbsp;&nbsp;&nbsp;Filtrer par type : 
<select name="filtre" id="filtre" onchange="window.location.href='<?php echo $this->baseUrl();?>/Fichier/listeclients/tri/'+$('select#tri').attr('value')+'/filtre/'+this.value+'/page/<?php echo $page->getCurrentPageNumber();?>'" >
    <?php 
    if($this->filtre==""){ echo '<option value="" selected>Tous</option>'; }else{ echo'<option value="">Tous</option>';}
    if($this->filtre=="0"){ echo '<option value="0" selected>Ni ach.,ni vend.</option>'; }else{ echo'<option value="0">Ni ach.,ni vend.</option>';}
    if($this->filtre=="1"){ echo'<option value="1" selected>Acheteur</option>'; }else{ echo'<option value="1">Acheteur</option>';}
    if($this->filtre=="2"){ echo'<option value="2" selected>Vendeur</option>'; }else{ echo'<option value="2">Vendeur</option>';}
    ?>
</select>
</form>
<table id="liste">

        <tr>        
            <td colspan=1 align="center"><a href="<?php echo $this->url(array('controller'=>'Fichier','action'=>'ajouterclient')); ?>"><img src="<?php echo $this->baseUrl(); ?>/public/image/picto/ajouter.png" border=0 alt="Ajouter"/></a></td>
            <td colspan=7 align="center"><?php echo $this->clients; ?></td>
        </tr>

        <tr>
            <th>Code cci</th> 
            <th>Type</th> 
            <th>Forme juridique</th>
            <th>Nom</th>
            <th>Coordonn&eacute;es</th>
            <th>Identifie<br/> bateaux</th>
            <th>Propri&eacute;taire<br/>emballages</th>
            <th></th>
        </tr>
        <?php
        foreach ($this->clients as $client) {
            ?>
            <tr>
            <?php 
            if($client->code_identif_cci==0)
            {
                echo ' <td>NC</td>';
            }else{
                echo ' <td>'.$client->code_identif_cci.'</td>';
            }
            echo ' <td>' . $client->getTypes()->nom_complet .'</td>';
            echo ' <td>' . $client->getFormes()->nom_court .'</td>';
            echo ' <td>' . $client->nom_complet .'</td>';?>
            <td align="center"><a href="#" onclick="window.open('<?php echo $this->BaseUrl();?>/Fichier/coordonneesclient/id/<?php echo $client->id;?>','','menubar=no, status=no, scrollbars=yes, width=400, height=300');" ><img src="<?php echo $this->baseUrl(); ?>/public/image/picto/voir.png" border=0 alt="Voir"/></a></td>
            <?php
            echo ' <td align="center">' . $client->getIdentifie().'</td>';
            echo ' <td align="center">' . $client->getProprio().'</td>';
            echo ' <td width="65px" align="center"> ';
            echo ' <a href="'.$this->url(array('controller'=>'Fichier','action'=>'modifierclient','id'=>$client->id)).'"><img src="'.$this->baseUrl().'/public/image/picto/modifier.png" border=0 alt="Modifier"/></a>';
            echo ' &nbsp;&nbsp;<a href="'.$this->url(array('controller'=>'Fichier','action'=>'supprimerclient','id'=>$client->id)).'"><img src="'.$this->baseUrl().'/public/image/picto/supprimer.png" border=0 alt="Supprimer"/></a> ';
            echo ' </td>';
            ?>
            </tr>
            <?php
        }
        ?>
        <tr>        
            <td colspan=1 align="center"><a href="<?php echo $this->url(array('controller'=>'Fichier','action'=>'ajouterclient')); ?>"><img src="<?php echo $this->baseUrl(); ?>/public/image/picto/ajouter.png" border=0 alt="Ajouter"/></a></td>
            <td colspan=7 align="center"><?php echo $this->clients; ?></td>
        </tr>
</table>

Ensuite le traitement dans mon controleur qui reste un traitement basique de formulaire

Code:

public function listeclientsAction(){
        $this->view->title="Clients";
        $dbAdapter = Zend_Registry::get('dbAdapter');
        if ($this->_getParam('tri')!=null) {
            $tri=$this->_getParam('tri');
            if($tri=="code_identif_cci")
                $tri=array("code_identif_cci","Formes_juridiques_id","nom_complet");
            if($tri=="Formes_juridiques_id")
                $tri=array("Formes_juridiques_id","nom_complet");
            if($tri=="nom_complet")
                $tri="nom_complet";
        }else{
            $tri=array("code_identif_cci","Formes_juridiques_id","nom_complet");
        }
        if ($this->_getParam('filtre')!=null && $this->_getParam('filtre')!="" ) {
            $where="closed is null and Types_clients_id=".$this->_getParam('filtre')." ";
            $filtre=$this->_getParam('filtre');
        }else{
            
            $where="closed is null";
            $filtre="";
        }
        $liste=new Clients();
        $liste=$liste->fetchAll($where, $tri);
        $page = Zend_Paginator::factory($liste);
        $page->setPageRange(5);
        $page->setCurrentPageNumber($this->_getParam('page', 1));
        $page->setItemCountPerPage($this->_getParam('par', 25));
        $this->view->clients = $page;
        $this->view->tri=$tri;
        $this->view->filtre=$filtre;
        $this->render();
    }

Je ne sais pas si c'est ce que tu cherches à faire mais n'hésite pas à me poser des questions si tu as besoin.

Ciao

Hors ligne

 

#3 11-09-2009 15:51:14

gcr01
Membre
Date d'inscription: 28-08-2009
Messages: 17

Re: retour d'un Zend_Paginator

Merci,

Je pensais que ce serait beaucoup plus simple.

Hors ligne

 

#4 11-09-2009 15:56:23

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

Re: retour d'un Zend_Paginator

Y a rien de très compliquer, en fait tu crées toi même tes liens à l'aide de javascript pour qu'il récupère les anciennes valeurs et y intègre les nouvelles. Ce lien renvoie sur la même page et tu traite le contenu de ton lien dans ton controleur en testant si les variables existent et en traitant leur contenu

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