Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    septembre 2011
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2011
    Messages : 303
    Points : 101
    Points
    101

    Par défaut [Zend 1.x] Pagination ajouts fonctionalitées

    Bonjour,

    Je travail sur une tâche a laquelle je fait appel à vous.

    J'ai le système de pagination de Zend qui fonctionne très bien,

    et je voudrait ajouter un système de memorisation du nombre d'élement afficher dans la page.

    en ce moment sous la liste des elements j'ai un select ou je peux choisir le nombre d'élément à afficher.

    je l'enregistre en bd mais je doit maintenant la charger au moment ou je reviens sur cette même page..

    J'ai pensé a un redirect qui ne me semble pas être un solutions raisonnable..

    voici mon code pour la pagination:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     <select class="pagesize" onchange="window.location = this.options[this.selectedIndex].value;">
            <?php for ($i = $numberOfPagesByStep; $i <= 5 * $numberOfPagesByStep; $i+=$numberOfPagesByStep): ?>
                <option value="<?php echo $this->url(array('count' => $i)) ?>" <?php if ($this->itemCountPerPage == $i) echo 'selected="selected"';
     
                $userAmountService->setUserAmountItemsPages($i,$this->url());
                ?>>
                    <?php echo $i ?> <?php echo $this->translate('results'); ?>
                </option>
            <?php endfor ?>
        </select>
    Ce code affiche le select pour choisir le nombre d'élément à afficher et la pagination
    J'ai ajoute ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setUserAmoutItemsPages(...)
    qui enregistre le changement en bd pour cette utilisateur..

    ma route sans le choix de l'utilisateur pour le nombre d'element dans la liste est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8000/module/controller/action/page/1
    et après le choix du nombre d'element dans la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8000/module/controller/action/page/1/count/250
    count/250
    représente 250 éléments dans la liste,...

    Merci pour vos réactions. et pour la lecture

  2. #2
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    septembre 2011
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2011
    Messages : 303
    Points : 101
    Points
    101

    Par défaut UP : heritage Zend_Paginator

    voici la methodes qui envoi a la vue les infos pour le nombre d'element dans les pages..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
      /**
         * Creates the page collection.
         *
         * @param  string $scrollingStyle Scrolling style
         * @return stdClass
         */
        protected function _createPages($scrollingStyle = null)
        {
            $pageCount         = $this->count();
            $currentPageNumber = $this->getCurrentPageNumber();
     
            $pages = new stdClass();
            $pages->pageCount        = $pageCount;
            $pages->itemCountPerPage = $this->getItemCountPerPage();
            $pages->first            = 1;
            $pages->current          = $currentPageNumber;
            $pages->last             = $pageCount;
     
            // Previous and next
            if ($currentPageNumber - 1 > 0) {
                $pages->previous = $currentPageNumber - 1;
            }
     
            if ($currentPageNumber + 1 <= $pageCount) {
                $pages->next = $currentPageNumber + 1;
            }
     
            // Pages in range
            $scrollingStyle = $this->_loadScrollingStyle($scrollingStyle);
            $pages->pagesInRange     = $scrollingStyle->getPages($this);
            $pages->firstPageInRange = min($pages->pagesInRange);
            $pages->lastPageInRange  = max($pages->pagesInRange);
     
            // Item numbers
            if ($this->getCurrentItems() !== null) {
                $pages->currentItemCount = $this->getCurrentItemCount();
                $pages->itemCountPerPage = $this->getItemCountPerPage();
                $pages->totalItemCount   = $this->getTotalItemCount();
                $pages->firstItemNumber  = (($currentPageNumber - 1) * $this->getItemCountPerPage()) + 1;
                $pages->lastItemNumber   = $pages->firstItemNumber + $pages->currentItemCount - 1;
            }
     
            return $pages;
        }
    ma question est la suivante : comment créer un classe enfant afin de redefinir cette methode a ma conveance?

    dans ma vue je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->itemCountPerPage
    mais c'est la methode parent qui est appeler..

    merci pour vos réactions.

  3. #3
    Membre régulier
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    septembre 2011
    Messages
    303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2011
    Messages : 303
    Points : 101
    Points
    101

    Par défaut voici plus clairement ce que je souhaite..

    ma pagination est gérer comme voici par l'instance de zend paginator:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (!$data instanceof \Zend_Paginator) {
        		$data = \Zend_Paginator::factory($data);
        	}
    et voici les methode afin de modifier le numero de la page et le nombre d'élément dans la page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $data->setCurrentPageNumber($this->getPage())
        	->setItemCountPerPage($this->getPageSize());
    c'est cette config que je veux changer.

    Comment recupérer l'instance en cours afin d'injecter les valeurs en bdd dans ces methodes?
    J'ai une route et chaque route je vais avoir une config différentes choisi par l'utilisateur..

    merci pour vos réactions.

Discussions similaires

  1. Zend et ajouter album
    Par xev74 dans le forum Zend_Db
    Réponses: 8
    Dernier message: 02/02/2013, 10h50
  2. zend paginator et ajout de paramètre
    Par vince29 dans le forum Autres composants
    Réponses: 38
    Dernier message: 29/07/2011, 09h58
  3. ajout fonctionalitée, accueil
    Par speedy_g dans le forum Evolutions du club
    Réponses: 3
    Dernier message: 04/02/2010, 14h06
  4. Réponses: 3
    Dernier message: 18/07/2008, 11h17
  5. [Zend Neon beta] Ajouter un raccourci
    Par FredPont dans le forum Zend Studio
    Réponses: 1
    Dernier message: 22/05/2008, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo