簡體   English   中英

Zend_Paginator +查詢參數器(ZF1)

[英]Zend_Paginator + Query Paramenter (ZF1)

我將ZF1與Zend_Paginator一起使用,但是如果我進行的搜索使所有數據都沒有過濾器,則效果很好,但是如果我有查詢過濾器,則分頁僅在第一頁上起作用。

   public function getConsultaTelefones($setor)
       {      

          if ($setor != "") {

           $select = $this->select()
                 ->setIntegrityCheck ( false )
                 ->from ( array('t' => 'sca_telefone'))      
                 ->joinInner ( array ('p' => 'sca_posto'), 't.idPosto = p.idPosto')   
                 ->joinInner ( array ('l' => 'sca_lotacao'), 't.idLotacao = l.idLotacao')   
                 ->where("l.idLotacao = ?", $setor) ;   

          $resultado = $this->fetchAll($select);

          } else {

             $select = $this->select()
                 ->setIntegrityCheck ( false )
                 ->from ( array('t' => 'sca_telefone'))      
                 ->joinInner ( array ('p' => 'sca_posto'), 't.idPosto = p.idPosto')   
                 ->joinInner ( array ('l' => 'sca_lotacao'), 't.idLotacao = l.idLotacao');

          $resultado = $this->fetchAll($select);

          }

       return $resultado;

       }   

在$扇區參數中,它將所有數據作為過濾器並創建正確的分頁,但是只顯示第一頁,因為如果我單擊下一頁或最后一頁,他將“重新創建”所有表數據的分頁。

public function paginacaoConsulta($dados)
   {
      $pagina = intval($this->_getParam('pagina', 1));

      $paginator = Zend_Paginator::factory($dados);
        $paginator->setItemCountPerPage(5);
        $paginator->setPageRange(7);
        $paginator->setCurrentPageNumber($pagina);

        $this->view->paginator = $paginator;   

    }

   public function consultarAction()
   {
      $setor = $this->_getParam('setor');

      $modLotacao = new Sca_Model_Lotacao('sca');

      $resultado = $modLotacao->getConsultaTelefones($setor);

      $this->paginacaoConsulta($resultado);
        }

已經研究了幾件事,但沒有任何事情滿足我。 我需要幫助。

請遵循其余代碼:

<?php echo $this->paginationControl($this->paginator, 'Sliding', 'paginacao.phtml'); ?>



<nav>
  <ul class="pagination">

    <li>

    <!-- Link para a primeira página -->
    <?php if (isset($this->previous)): ?>
        <a title="Primeira Página" href="<?php echo $this->url(array('pagina' => $this->first)); ?>" aria-label="Previous">&laquo; Primeira</a>
    <?php else: ?>
        <a class="current" title="Primeira Página" href="<?php echo $this->url(array('pagina' => $this->first)); ?>" aria-label="Previous">&laquo; Primeira</a>
    <?php endif; ?>

    </li>

    <li>

        <?php if ($this->pageCount): ?>

        <?php if (isset($this->previous)): ?>

          <a href="<?php echo $this->url(array('pagina' => $this->previous)); ?>" aria-label="Previous">
             <span aria-hidden="true">&laquo;</span>
          </a>

        <?php else: ?>

          <span aria-hidden="true">&laquo;</span>

        <?php endif; ?>

    </li> 

    <li>

        <?php foreach ($this->pagesInRange as $pagina): ?>

          <?php if ($pagina != $this->current): ?>

            <a href="<?php echo $this->url(array('pagina' => $pagina)); ?>">
                <?php echo $pagina; ?>
            </a>

          <?php else: ?>

            <a href="#"><?php echo $pagina; ?></a>

          <?php endif; ?>

        <?php endforeach; ?>

    </li>

    <li>

        <?php if (isset($this->next)): ?>

          <a href="<?php echo $this->url(array('pagina' => $this->next)); ?>" aria-label="Next" >
            <span aria-hidden="true">&raquo;</span>
          </a>

        <?php else: ?>
          <span aria-hidden="true">&raquo;</span>
        <?php endif; ?>

        <?php endif; ?>

    </li>

    <li>

    <!-- Última página -->
    <?php if (isset($this->next)): ?>
        <a title="Última Página" href="<?php echo $this->url(array('pagina' => $this->last)); ?>" aria-label="Next">Última &raquo;</a>
    <?php else: ?>
        <a class="current" title="Última Página" href="<?php echo $this->url(array('pagina' => $this->last)); ?>" aria-label="Next">Última &raquo;</a>
    <?php endif; ?>

    </li>

  </ul>
</nav>

您必須在下一個和上一個鏈接中傳遞查詢參數。 像這樣:

<a href="<?php echo $this->url(array('pagina' => $this->previous, 'setor' => $this->setor)); ?>" aria-label="Previous">

並將其傳遞給視圖:

$this->view->setor = $this->_getParam('setor');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM