我正在使用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;
}
在参数$ sector中,它将所有数据作为过滤器并创建正确的分页,但只创建第一页,因为如果我单击下一页或最后一页,他会重新创建"分页所有表数据。
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">« Primeira</a>
<?php else: ?>
<a class="current" title="Primeira Página" href="<?php echo $this->url(array('pagina' => $this->first)); ?>" aria-label="Previous">« 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">«</span>
</a>
<?php else: ?>
<span aria-hidden="true">«</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">»</span>
</a>
<?php else: ?>
<span aria-hidden="true">»</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 »</a>
<?php else: ?>
<a class="current" title="Última Página" href="<?php echo $this->url(array('pagina' => $this->last)); ?>" aria-label="Next">Última »</a>
<?php endif; ?>
</li>
</ul>
</nav>
答案 0 :(得分:0)
您必须在下一个和上一个链接中传递查询参数。像这样:
<a href="<?php echo $this->url(array('pagina' => $this->previous, 'setor' => $this->setor)); ?>" aria-label="Previous">
并将其传递给视图:
$this->view->setor = $this->_getParam('setor');