Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous,
Je viens de tester facilement le paginator, et cela marche tres bien :
// Gestion de la pagination $paginator = Zend_Paginator::factory($row); $paginator->setItemCountPerPage(4); $paginator->setCurrentPageNumber($this->getRequest()->getParam('page')); $this->view->myRows= $paginator;
Par contre, ces données viennent d'un formulaire (sans Zend_Form). Au début je teste si cela viens d'un POST :
public function indexAction() { define ('_NB_MAX_CAR_SEARCH_',3); if ($this->_request->isPost()) {
Lors de la pagination (passage à une autre page), je perds les données du POST . A part récupérer les données du form et des enreg dans un Zend_Registry (mais ce n'est pas tres élégant ), je me demande si il y a une astuce "Zend".
Merci
Fabrice
Hors ligne
Une petite question : Pourquoi utilises tu du POST ?
Ton formulaire n'est-il pas qu'un filtre sur les données que tu cherches à afficher.
Un GET est alors largement suffisant.
Hors ligne
Avec Zend_Registry tu ne peux pas car le registre va être écrasé à chaque changement de page.
La solution la plus propre consiste à utiliser les sessions avec Zend_Session_Namespace
Hors ligne
Salut ,
En fait, j'ai trouvé cette fonctionalité, il y a trés peu de temps.
Ton Zend_paginatorControl dans ta page HTML ne te renvoie pas les variable de ta query qu'il y avait dans la première page.
Pour les ajouter, dans ton Controller, envoie une variable que tu recupere dans ta vue.
Ensuite dans ta vue, genre index.phtml, tu dois avoir
$this->paginationControl($this->unevariabletableaurecord,'Sliding','pagination.phtml);
que j'ai changé avec
$this->paginationControl($this->unevariabletableaurecord,'Sliding','pagination.phtml,array('search'=$this->search));
Dans ton fichier paginator.phtml, tu change les url
$this->url(array('page' => $this->first));
par
$this->url(array('page' => $this->first, 'search'=>$this->search));
Hors ligne
bonjour,
Merci pour vos réponses.
Une petite question : Pourquoi utilises tu du POST ?
Pour plusieurs raisons evidentes, on n'utilise pas (plus) le get, trop peu fiable, pas tres propre, etc. Et ce n'est pas le propos d'ailleurs
Avec Zend_Registry tu ne peux pas car le registre va être écrasé à chaque changement de page.
Que me racontes-tu là ????, voir ici, mais les sessions sont aussi une bonne idée, j'y avais pensé.
Merci grc01, je vais essayer ta methode.
Fabrice
Hors ligne
__fabrice a écrit:
bonjour,
Merci pour vos réponses.Une petite question : Pourquoi utilises tu du POST ?
Pour plusieurs raisons evidentes, on n'utilise pas (plus) le get, trop peu fiable, pas tres propre, etc. Et ce n'est pas le propos d'ailleurs
trop peu fiable ?
Le POST n'est pas plus fiable, légèrement plus dur que le GET à forger ^^ Au lieu de modifier les données dans l'url, on fait un formulaire. La fiabilité est la même quelque soit la donnée reçue de l'exterieur. GET/POST/COOKIE/Database même combat.
Propre pour quoi ?
A part pour le référencement, quoique.
Le gros inconvénient du GET est sa limite du nombre de caractères.
Pour ce qui est du hors de propos, je ne suis pas sûr de comprendre.
Ta problématique est que tu n'arrives pas à garder des données que tu as toi même "masqué" à ton navigateur via POST. Utilisé les sessions déplace le problème sur le serveur alors qu'en GET cela resterai une problématique navigateur. En plus ca te rajoute plus de traitement.
// en pseudo code si POST on filtre sinon si SESSION on filtre // en get si GET on filtre
En plus, en n'utilisant pas le GET, tu empêches d'utiliser le cache de ton navigateur, proxy ou autre. Mais ca, c'est un autre problème. Si tu caches les données coté serveur, c'est encore le serveur qui trinque ^^
J'aimerai bien que tu m'explicites un peu plus ton raisonnement concernant les problèmes du GET et POST. C'est peut être un peu hors topic mais bon, si je peux dormir moins con ce soir, je suis toujours preneur.
Avec Zend_Registry tu ne peux pas car le registre va être écrasé à chaque changement de page.
Que me racontes-tu là ????, voir ici, mais les sessions sont aussi une bonne idée, j'y avais pensé.
manuel ZF a écrit:
Un regitre est un conteneur pour stocker des objets et des valeurs dans l'espace d'application. En stockant la valeur dans le registre, le même objet est toujours disponible partout dans votre application.
Application est a prendre au terme déroulement du traitement sur la page, il ne faut pas oublié que HTTP est protocole sans état.
manuel ZF a écrit:
Ce mécanisme est une alternative à l'utilisation du stockage global
A comprendre, Zend_Registry <=> $_GLOBAL ou un truc du genre ^^
fais le test suivant :
include '/path/vers/Zend/Registry.php'; if ( isset($_GET['registre']) ) Zend_Registry::set('registre', $_GET['registre']) ; else echo Zend_Registry::isRegistered('registre') ? Zend_Registry::get('registre') : 'Donnée absente du registre' ;
et fais les appels suivant :
http://localhost/mapage.php?registre=toto
puis
http://localhost/mapage.php
Hors ligne
__fabrice a écrit:
Que me racontes-tu là ????, voir ici
Comme ndesaleux l'a bien expliqué, je ne rajouterais qu'une chose:
Ne pas confondre Zend_Registry et les sessions...
Le comportement et la porté des deux est très différentes.
ensuite entre choisir entre POST et GET pour un formulaire de recherche je suis assez d'accord avec ndesaleux pour utiliser GET, sauf si tu as un grand nombre de variable..... (et encore....)..
Hors ligne
Pages: 1