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>

0

Решение

Вы должны перейти к параметру запроса в следующей и предыдущей ссылке. Как это:

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

и передать его на вид:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]