1

結果とフィルターに存在する結果の総数を一度に取得するサービスを使用しています。さらに詳しく説明すると、合計 100,000 件のレコードがあり、1 ページに 25 件のレコードを表示しているとします。私は配列を持っています:

$myarr = array('totalCount' => 100000,
      'results'       => array(...data...));

このデータは、一度に 25 レコードに制限されています。

問題 : このデータを zend_paginator に送信すると、prev[disabled] & next[disabled] の 1 ページ (アンカー) しか表示されません。コードによると、正常に動作しますが、データの総数がわかっているので、他のページネーションアンカー[2,3,4,5,6,7,8,9]などを表示する方法。

私はこれについて長い間調査しましたが、ソリューションがDBクエリ用であり、配列に変換されるXML形式のサービスから、DBからこの結果を得ることはありません。

$paginator      = new Zend_Paginator(new Zend_Paginator_Adapter_Array($myarr ['results']));
    $paginator->setItemCountPerPage(25);
    $paginator->setPageRange(10);
    $paginator->setCurrentPageNumber(1);

100,000 レコードをロードしたために Memory Exhaust の致命的なエラーを受け取ったので、すべてのデータをロードせずに他のページネーション リンクを作成するように合計カウントを送信するにはどうすればよいですか?すべてのサービス リクエストの TOTAL COUNT。

ページネーション.phtml:

<div class="pagination" >
    <!-- Previous page link -->
    <?php if (isset($this->previous)): ?>
          <a href="javascript:void(0)" onclick='fetchPaginationData("<?php echo $this->divid;?>","<?php echo  $this->url(array('page' => $this->firstPageInRange -1)); ?>")'><span style="border-bottom-left-radius: 4px; border-left-width: 1px; border-top-left-radius: 4px;">Prev</span></a> 
    <?php else: ?>
        <span class="disabled" style="border-bottom-left-radius: 4px; border-left-width: 1px; border-top-left-radius: 4px;">Prev</span>
    <?php endif; ?>
    <!-- Numbered page links -->
    <?php foreach ($this->pagesInRange as $page): ?>
        <?php if ($page != $this->current): ?>
            <a href="javascript:void(0);" onclick='fetchPaginationData("<?php echo $this->divid;?>","<?php echo  $this->url(array('page' => $page)); ?>")' ><span><?php echo  $page; ?></span></a>
        <?php else: ?>
            <span class="page_current"><?php echo  $page; ?></span>
        <?php endif; ?>
    <?php endforeach; ?>
    <!-- Next page link -->
    <?php if (isset($this->next)): ?>
           <a href="javascript:void(0);" onclick='fetchPaginationData("<?php echo $this->divid;?>","<?php echo  $this->url(array('page' => $this->lastPageInRange +1)); ?>")'><span>Next &gt;</span></a> 
    <?php else: ?>
         <span class="disabled" style="border-bottom-right-radius: 4px; border-top-right-radius: 4px;">Next</span> 
    <?php endif; ?>

4

1 に答える 1