Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Autres composants
Autres composants Forum de support sur les autres composants de Zend Framework.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/07/2011, 16h22   #1
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
Par défaut zend paginator et ajout de paramètre

Bonjour,

Voilà, j'utilisais jusqu'à présent un zend_paginator pour afficher une liste de données. Jusque là, pas de souci, tout fonctionne.

J'ai ajouté un <form> au dessus de ma liste pour pouvoir filtrer sur une donnée. Cela fonctionne pour la première page, masi dès que je clique sur 'page 2', mon paramètre sélectionné dans la liste est perdue...

Auriez-vous une solution pour faire transiter ce paramètre ?

D'avance merci.

Vince
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 16h24   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Ton code nous serais utile en précisant exactement où ça coince
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 16h29   #3
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
ok pas de souci:

voilà mon controller :

Code :
1
2
3
4
5
6
7
8
9
 
$page = 1;
if($this->_request->isGet()){
    $page = $this->_request->getParam('page');
}
$paginator = Zend_Paginator::factory($select);
$paginator->setItemCountPerPage($nbItemPaginator);
$paginator->setCurrentPageNumber($page);
$this->view->paginator = $paginator;
ou $select =

Code :
1
2
3
4
5
6
 
$listCom = $com->select()->setIntegrityCheck(false)
		->from('commercant')
		->join(array('u'=>'user'),'u.idUser = commercant.idUser')
		->where('u.actif=1')
		->order("commercant.nomCommerce asc");

et dans ma vue, j'ai le formulaire de tri avec ma liste :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
<?php
		if($this->user->role=='admin') {
			echo "<form method='post' action='".$this->baseUrl."dp'>";
				echo "<table>";
					echo "<tr>";
						echo "<td align='left'>";
							echo "<b>Demandes payées entre le </b>";
							echo "<input type='text' name='searchStart' value='".$this->searchStart."' />";
							echo "<b> et le </b>";
							echo "<input type='text' name='searchEnd' value='".$this->searchEnd."' />";
							echo "<b> (JJ-MM-AAAA) pour </b>";
							echo "<select name='searchCom'>";
								echo "<option value=''></option>";
								foreach ($this->listcom as $com){
									if($this->searchCom == $com['idCommercant']){
										echo "<option selected value='".$com['idCommercant']."' label='".$com['nomCommerce']."'>".$com['nomCommerce']."</option>";
									}else{
										echo "<option value='".$com['idCommercant']."' label='".$com['nomCommerce']."'>".$com['nomCommerce']."</option>";
									}
								}
							echo "</select>";
 
						echo "</td>";
						echo "<td>";
							echo "<input type='submit' value = 'Rechercher' name='Rechercher'' />";
						echo "</td>";
					echo "</tr>";
				echo "</table>";
			echo "</form>";	
		}
	?>
et en dessous, le tableau :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
<?php echo $this->escape($dp['datecrea']);?></td>
	<td><?php echo $this->escape($dp['nom']);?></td>
	<td><?php echo $this->escape($dp['prenom']);?></td>
	<td><?php echo $this->escape($dp['montant']);?></td>
	<td><?php echo $this->escape($dp['libelle']);?></td>
	<td><?php if($dp['etat'] == 2) { echo $this->escape($dp['datemodif']); } else { echo "&nbsp;"; } ?></td>
	<td><?php echo $this->escape($dp['email']);?></td>
	<td>
	<a href="<?php echo $this->baseUrl; ?>/dp/voir/id/<?php
	echo $dp['idDemandePaiement'];?>">Consulter</a>
	</td>
	<td>
	<a target="_blank" href="<?php echo $this->baseUrl; ?>/pay/voir/id/<?php echo $dp['id']>">Facture</a>
	</td>
	<td>
 
	<?php 
    	//  Fonction Envoyer (ennvoi lien sécurisé au client)
	    if($dp['idEtat']==1 || $dp['idEtat']==3){
	      echo "<a href=".$this->baseUrl."/dp/send/id/".$dp['idDemandePaiement'].">Envoyer</a>";
	    }
 
      	// Fonction Annuler  (affiché si le paiement a eu lieu ce jour)
      	$date = new Zend_Date();
      	$date = $date->toString('yyyy-MM-dd');
 
      	$datePay = substr($dp['datePaiement'], 0, 10);
 
      	if($dp['idEtat']==2 && $date == $datePay){
        	echo "<b><a href=".$this->baseUrl."/dp/annuler/id/".$dp['idDemandePaiement']." title='Annuler le paiement'>Annuler</a></b>";
      	}else{
      		if($dp['idEtat']==2 && $this->user->role == 'admin' && $dp['transactionId'] != ''){
      			echo "<b><a href=".$this->baseUrl."/dp/rembourser/id/".$dp['idDemandePaiement']." title='Rembourser le paiement'>Rembourser</a></b>";
      		}
      	}
 
  	?>
  </td>
 
 
	</tr>
	<?php endforeach; /**
	                   * Fin LOOP
	                   */?>
 
	</tbody>
	</table>
<br />
<?php echo $this->paginator; ?>
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 16h38   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Et c'est quoi que tu perds exactement d'aprés le code que tu as posté
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 17h25   #5
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
décidément ... j'ai une petote tête..

en fait, je perds la valeur sélectionné dans le premier <form>, dans le select 'searchCom'

le but étant par exemple d'avoir une URL qui se termine par :

http..../page/2/searchCom/1 au lieu de http..../page/2 !

Merci
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 18h08   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
je suppose que le select te permet d'effectuer des action sur ton tableau ?
Si tel est le cas il faut que tu ajoute à ton paginateur les données qui ont été passé
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 20h51   #7
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
oui le select 'searchCom' permet de filtrer le contenu du tableau.
mon problème est qu'en passant à la page 2, je perds ce paramètre... car dans le paginator, je ne peux mettre que le résultat de la requête ...

il faudrait stocker cette variable en session ou cache ? le paginator ne permet pas de conserver un paramètre supplémentaire? je ne souhaite pas utiliser le paginationControl.

merci
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 21h07   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Faut juste que tu ajoute searchCom au lien qui te permet d'aller à la page suivant sur ton paginateur
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 09h07   #9
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
Bonjour,

Vu comme ça, ça à l'air très simple ....

Mais comment faire car je ne vois pas ou je peux modifier l'URL appeler par la paginator. J'ai l'impression qu'il appelle la page en cours de consultation en ajoutant le paramètre de la page, non?

merci
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 09h21   #10
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Tu peux le rajouter dans l'action définie suite à la validation de ton formulaire:
Code :
1
2
3
4
 
...
echo "<form method='post' action='".$this->baseUrl."dp'>"
...
Tu peux faire un truc du style:
Code :
1
2
 
echo "<form method='post' action='".$this->baseUrl."dp?searchCom/'".$this->searchCom.">"
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 09h40   #11
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
Salut,

Sauf que c'est l'élément paginator qui gère l'envoi des données ... et nom la validation d'un <form>...

Code :
<?php echo $this->paginator; ?>
Comme indiqué avant, l'idéal serait de pouvoir modifier l'URL appeler par l'élément paginator pour ajouter le ou les paramètres souhaités

Merci
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h12   #12
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Comme tu l'as dit dans un précédent mail:
Citation:
ton paginator appelle la page en cours de consultation en ajoutant le paramètre de la page
Il faut donc que ton paramètre searchCom apparaisse dans l'url de ta page en cours.

Sinon tu peux intervenir dans ton url via ton fichier 'pagination.phtml' dans lequel tu gères tes liens 'next', 'previous'...:
Code :
1
2
3
4
5
6
7
8
 
<a href="<?php echo $this->url(array('page' => $this->previous)); ?>">
    Précédente &gt;
  </a>
//...
<a href="<?php echo $this->url(array('page' => $this->next)); ?>">
    Suivante &gt;
  </a>
Ce fichier fait appel à l'aide de vue $this->url, et tu peux rajouter des paramètres à tes liens de la façon suivante:
Code :
1
2
 
$this->url(array('page'=>$this->next, 'searchCom'=>$this->searchCom));
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h23   #13
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
salut,
je n'ai pas de pagination.phtml...

j'ai intégré dans ma vue qui affiche mes données ..
et mon paginator est appelé comme ceci :

vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h25   #14
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Certes mais tu peux récupérer dans pagination.phtml
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h28   #15
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
donc je dois créer un pagination.phtml juste pour ça ?
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h32   #16
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Si tu n'as pas de fichier pagination.phtml, où gères tu les liens pour passer d'une page à l'autre?
C'est là qu'il faut que tu mettes à jour tes liens en rajoutant ton paramètres.

Il me semble qu'il serait plus propre d'avoir un fichier à part ainsi tu pourras gérer la mise en forme de ta barre de pagination.
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h53   #17
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
je suppose que le Zend_paginator le fait tout seul... et le fait très bien d'ailleurs... sauf que je ne pas lui passer de paramètres supplémentaires...

voici ce qu'il me donne de façon automatique :

< Précédent |1|2|3| ... Suivant >

je n'ai pas spécialement envie de changer ça...

donc au final, impossible d'ajouter un parmaètre au zend_paginator ?

Merci.
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h56   #18
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
il te reste encore l'option de faire apparaitre ton paramètre dans ta page en cours. Ainsi ton paginator le gardera lors d'un changement de page!
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 11h16   #19
Membre régulier
 
Homme Vincent Leboulanger
Développeur informatique
Inscription : janvier 2005
Messages : 317
Détails du profil
Informations personnelles :
Nom : Homme Vincent Leboulanger
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2005
Messages : 317
Points : 80
Points : 80
oui ou gérer mes paramètres en session...
merci
vince29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 12h29   #20
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
ajouter un paramètre ne change rien à ton paginateur ça permet juste de garder les paramètre passés à la page.

Utiliser les sessions contraint à supprimer ces informations en session selon les cas.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h23.


 
 
 
 
Partenaires

Hébergement Web