2013-02-28 1 views
0

У меня есть множество элементов. Элементы - это пути к файлам. Я создал разбивку на страницы, но когда я нажимаю дальше, это не меняется. Я хочу отображать 1 pdf на странице. Ниже мой кодPagination in Zend не работает

class IndexController extends Zend_Controller_Action 
{ 

    public function init(){} 

    public function indexAction() 
    { 
     if($_SERVER['SERVER_NAME']=="portal-dev"){ 
      $location = "/data/scan/invoice";   
      $listOfFiles = $this->readFiles($location); 
      $paginator = Zend_Paginator::factory($listOfFiles); 
      $paginator->setItemCountPerPage(1); 
      $this->view->paginator = $paginator; 
     } 
    } 


    public function readFiles($location){ 
     $pattern="(\.pdf$)"; //valid image extensions 
     $thelist = array(); 
     if ($handle = opendir($location)) { 
      while (false !== ($file = readdir($handle))) 
      { 
       if (eregi($pattern, $file)) //if this file is a valid image 
       { 
        $thelist[] = $file; //insert files into array 
        $max = count($thelist) - 1; 
        $max1 = count($thelist); 
       } 
      } 
      closedir($handle); 
     } 
     return $thelist; 
    } 
} 

index.phtml

<div id="main"> 
    <?php if(!$this->paginator){ 
     echo "No Files to process"; 
    }else{ 
    ?> 
    <table> 
     <tr> 
      <td rowspan=2></td> 
      <td></td> 
     </tr> 
     <tr> 
      <td></td> 
     </tr> 

    </table> 
    <?php if (count($this->paginator)): ?> 
    <ul> 
     <?php foreach ($this->paginator as $item): ?> 
     <li><?php echo $item; ?> 
     </li> 
     <?php endforeach; ?> 
    </ul> 
    <?php endif; ?> 

    <?php echo $this->paginationControl($this->paginator,'Sliding','partial/my_pagination_control.phtml'); ?> 
    <?php }?> 
</div> 

пагинация находится в каталоге частичной

<?php if ($this->pageCount): ?> 
<div 
    class="paginationControl"> 
    <!-- Previous page link --> 
    <?php if (isset($this->previous)): ?> 
    <a href="<?php echo $this->url(array('page' => $this->previous)); ?>"> 
     Previous </a> <span class="bar"> | </span> 
    <?php else: ?> 
    <span class="disabled"> Previous</span> <span class="bar"> | </span> 
    <?php endif; ?> 

    <!-- Numbered page links --> 
    <?php foreach ($this->pagesInRange as $page): ?> 
    <?php if ($page != $this->current): ?> 
    <a href="<?php echo $this->url(array('page' => $page)); ?>"> <?php echo $page; ?> 
    </a> <span class="bar"> | </span> 
    <?php else: ?> 
    <?php echo $page; ?> 
    <span class="bar"> | </span> 
    <?php endif; ?> 
    <?php endforeach; ?> 

    <!-- Next page link --> 
    <?php if (isset($this->next)): ?> 
    <a href="<?php echo $this->url(array('page' => $this->next)); ?>"> Next 
    </a> 
    <?php else: ?> 
    <span class="disabled">Next </span> 
    <?php endif; ?> 
</div> 
<?php endif; ?> 

ответ

1

Try после установки текущего номера страницы в indexAction

$paginator->setCurrentPageNumber($this->_getParam('page')); 

Как это

$paginator = Zend_Paginator::factory($listOfFiles); 
$paginator->setItemCountPerPage(1); 
$paginator->setCurrentPageNumber($this->_getParam('page')); 
$this->view->paginator = $paginator; 
+0

Работы. Почему URL имеет индекс/index/page/2? Показывает индекс дважды – shorif2000

+0

первым индексом является имя контроллера, а второе - имя действия. – Reshil

+0

Я понял, как только я использую разбиение на страницы, мне нужно изменить ссылки href на http: // baseUrl();?>/images/logo.jpg' в пределах простоя. Это нормально? или способ сделать это? – shorif2000