Как ограничить количество ссылок для пагинации в Zend_Paginator

При использовании Zend_Paginator я не хочу, чтобы он показывал мне все ссылки для пагинации. Вот как я это реализую:

  $adapter = new Zend_Paginator_Adapter_DbSelect($result);
  $paginator = new Zend_Paginator($adapter);
  $page=$this->_getParam('page',1);
  $paginator->setItemCountPerPage(10);
  $paginator->setCurrentPageNumber($page);
  $this->view->paginator=$paginator;

Теперь он показывает мне все ссылки. Например. на странице 100 записей и 10 строк, поэтому он покажет мне от 1 до 10 ссылок. Как мне получить 5 ссылок, с 1 по 5? Вот так:

"start"  "previous" 1  2  3  4  5  "Next"  "End"

ИЗМЕНЕНО

<!--Number page links-->
<?php foreach ($this->pagesInRange as $page): ?>
    <?php if ($page != $this->current): ?>
        <a href="<?= $this->url(array('page' => $page)); ?>">
            <span class="fg-button ui-button ui-state-default"><?= $page; ?></span>
        </a>
        <?php else: ?>
            <span class="fg-button ui-button ui-state-default ui-state-disabled" ><?= $page; ?></span>
        <?php endif; ?>
    <?php endforeach; ?>

Как мне изменить его, чтобы он показывал мне только 5 ссылок?

$adapter = new Zend_Paginator_Adapter_DbSelect($select);
$paginator = new Zend_Paginator($adapter);

$page=$this->_getParam('page',1);
$paginator->setItemCountPerPage(10);
$paginator->setCurrentPageNumber($page);
$paginator->setPageRange(5);
$this->view->paginator=$paginator;

person Edward Maya    schedule 09.02.2012    source источник


Ответы (2)


$paginator->setPageRange(5); у меня работает. Однако вам может потребоваться применить эту функцию в элементе управления разбиением на страницы.
Так выглядит раздел ссылки на страницу моего элемента управления.

<!--Number page links-->
        <?php foreach ($this->pagesInRange as $page): ?>
            <?php if ($page != $this->current) : ?>
                <a href="<?php echo $this->url(array_merge($params,
                        array('page' => $page))) ?>">
                    <?php echo $page ?></a> |
            <?php else: ?>
                    <?php echo $page ?> |
                <?php endif; endforeach; ?>
person RockyFord    schedule 09.02.2012
comment
мой ‹! - Номера страниц ссылок -› выглядят как это любезно просмотрите редактирование - person Edward Maya; 27.02.2012

Это хороший. По умолчанию Zend Paginator устанавливает значение по умолчанию 10, как вы видели. Но способ отменить его следующий:

$adapter = new Zend_Paginator_Adapter_DbSelect($result);
$paginator = new Zend_Paginator($adapter);
$page=$this->_getParam('page',1);
$paginator->setItemCountPerPage(10);
$paginator->setCurrentPageNumber($page);
$paginator->setPageRange(5);
$this->view->paginator=$paginator;

Дополнительную информацию можно найти в методах настройки Zend Paginator

person Matthew Setter    schedule 09.02.2012
comment
Я должен был ответить, используя ваш образец кода как основу моего образца кода. прости за это. - person Matthew Setter; 09.02.2012
comment
@sir, что вы имеете в виду под ‹объектом конфигурации› ?? - person Edward Maya; 09.02.2012
comment
это была моя ошибка. Я должен был начать пример с: $ adapter = new Zend_Paginator_Adapter_DbSelect ($ result); $ paginator = новый Zend_Paginator ($ адаптер); - person Matthew Setter; 09.02.2012
comment
пожалуйста, отредактируйте свой ответ, пожалуйста, bcox, я изменил свой код, но все еще получаю 10 ссылок - person Edward Maya; 09.02.2012