2012-02-09 2 views
3

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

EDITED

<!--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; 

ответ

0
<!-- 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

теперь текущая страница не в ссылках ?? –

0

это хороший. По умолчанию 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; 

Вы можете найти немного больше информации в configuration methods for Zend Paginator

+0

я должен был ответить, используя ваш пример кода в качестве основы моего образца кода. Извини за это. –

+0

@sir Что вы подразумеваете под <своим конфигурационным объектом> ?? –

+0

это была моя ошибка. Я должен был начать с примера: $ adapter = new Zend_Paginator_Adapter_DbSelect ($ result); $ paginator = новый Zend_Paginator ($ adapter); –

3

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

<!--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

my выглядят как это любезно см. В редакции –