Как ограничить количество ссылок на страницы в Zend_Paginator - PullRequest
3 голосов
/ 09 февраля 2012

При использовании 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;

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

$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; ?>
0 голосов
/ 27 февраля 2012
 <!-- Numbered page links -->
    <?php foreach ($this->pagesInRange as $page): ?>
        <?php if ($page != $this->current): ?>
        <?php if ($page <6): ?>
            <a href="<?= $this->url(array('page' => $page)); ?>"><span class="fg-button ui-button ui-state-default"><?= $page; ?></span></a>
        <?php elseif($page <6): ?>
            <span class="fg-button ui-button ui-state-default ui-state-disabled" ><?= $page; ?></span>
        <?php endif; ?>
        <?php endif; ?>
    <?php endforeach; ?>
0 голосов
/ 09 февраля 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

...