2013-04-13 16 views
6

göstermeyiz:ZF2 paginator ben sorguda 6 kayıtları olduğu ve bu kodu doğru 3 sayfalarınızda göstermeyi son sayfayı

(action) 
    public function listAction() 
     { 
      $page = (int) $this->params()->fromRoute('id', 0); 
      $posts = $this->getPagesTable()->selectPages(); 
      $paginator = new Paginator(new PaginatorIterator($posts)); 
      $paginator->setCurrentPageNumber($page) 
         ->setItemCountPerPage(2) 
         ->setPageRange(7); 
      return new ViewModel(array(
        'paginator' => $paginator, 
        )); 
     } 
(view) 
    <?php foreach ($paginator as $post) : ?> 
     <h2><?php echo $this->escapeHtml($post->id); ?></h2> 
     <div><?php echo $this->escapeHtml($post->name);?> 
    <?php endforeach; ?> 

ama eylem foreach döngüsü eklediğinizde:

public function listAction() 
{ 
    $page = (int) $this->params()->fromRoute('id', 0); 
    $posts = $this->getPagesTable()->selectPages(); 
    $paginator = new Paginator(new PaginatorIterator($posts)); 
    $paginator->setCurrentPageNumber($page) 
       ->setItemCountPerPage(2) 
       ->setPageRange(7); 
    foreach ($paginator as $post) { 
     // some code or empty foreach 
    }; 
    return new ViewModel(array(
      'paginator' => $paginator, 
      )); 
} 

paginator son (3) sayfasını göstermiyor (1 ve 2 sayfa doğru şekilde gösteriliyor). Neden? Teşekkür ederiz!


> getIterator $ paginator- eklerseniz() -> geri sarma() foreach sonra {}, paginator gösterisi sadece ilk sayfası ve ikinci ve üçüncü sayfalar görünmüyor.

+1

garip bir sorundur olabilir o iyi çalışıyor bu satırı çıkardıktan sonra

görünüm sayfasında
i am using iterator_to_array($userList); 

çözüldü am ama neden eylemde boş bir foreach var? Örneği daha küçük yapmak için kodu çıkardıysanız, sorunu kaldırmış olabilirsiniz! ayrıca $ posts ile döngü yapmak daha verimli olurdu diye düşünebilir miydim? – CodeMonkey

+0

Gerçek projede foreach bazı kodları içerir. – morin

+0

@CodeMonkey '$ posts'' $ paginator' öğesinin sınırlı olduğu tüm satırları (sayfada görüntülenecek) içerir. Görüntülemek için göndermeden önce bu öğeleri 'Eylem' içine almak için, böyle bir döngüye (örneğin, boş döngü veya "$ paginator-> getCurrentItems()" veya "$ paginator-> getItemsByPage ($ page)" gibi örneklenen örneklere ihtiyacınız vardır.) boş '$ paginator' öğeleri. – webcoder

cevap

0

Yineleyici kalıbı, bir işaretçi gibidir, yinelemenizi istediğiniz afeter. ,

+0

Yineleyici nasıl sıfırlanır? – morin

+0

@morin şunu deneyin: $ paginator-> getIterator() -> rewind() ' –

+0

eğer foreach {} 'dan sonra $ paginator-> getIterator() -> rewind() ekleyin, paginator sadece ilk sayfayı gösterir ve gösterme ikinci ve üçüncü sayfalar. – morin

0

Ben de aynı sorun

karşılaştığı Ama şimdi bu düzeyde yararlı

İlgili konular