Php Zend Paginator:在不加载(非DB)数据的情况下显示分页链接
我正在使用一个服务,它一次获取过滤器的结果和结果总数。 更详细地说,假设总共有100000条记录,我在一页上显示25条记录。我有一个数组,它有:Php Zend Paginator:在不加载(非DB)数据的情况下显示分页链接,php,zend-framework,pagination,zend-paginator,Php,Zend Framework,Pagination,Zend Paginator,我正在使用一个服务,它一次获取过滤器的结果和结果总数。 更详细地说,假设总共有100000条记录,我在一页上显示25条记录。我有一个数组,它有: $myarr = array('totalCount' => 100000, 'results' => array(...data...)); 此数据一次仅限于25条记录 问题:将此数据发送到zend_paginator时,它仅显示1页(锚定),上一页[已禁用]&下一页[已禁用]。根据代码,其工作正常,但如何显示其
$myarr = array('totalCount' => 100000,
'results' => array(...data...));
此数据一次仅限于25条记录
问题:将此数据发送到zend_paginator时,它仅显示1页(锚定),上一页[已禁用]&下一页[已禁用]。根据代码,其工作正常,但如何显示其他分页锚[2,3,4,5,6,7,8,9]等,因为我知道数据的总计数
我研究了很久,但每个地方的解决方案都是针对数据库查询的,我没有从数据库中得到这个结果,而是从一个转换为数组的XML格式的服务中得到的
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array($myarr ['results']));
$paginator->setItemCountPerPage(25);
$paginator->setPageRange(10);
$paginator->setCurrentPageNumber(1);
我如何发送total count,以便它在不加载所有数据的情况下创建其他分页链接,因为我收到了一个内存耗尽致命错误,因为加载了100000条记录&当我在每个服务请求中有total count时,每次只显示25条记录,这看起来也是一种非优化的获取所有记录的方式
pagination.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 ></span></a>
<?php else: ?>
<span class="disabled" style="border-bottom-right-radius: 4px; border-top-right-radius: 4px;">Next</span>
<?php endif; ?>
上
下一个
唉,我得到了zendy的解决方案:D
$this->view->results = $myarr['results']; // actual data used for generation of rows
$this->view->totalCount = $myarr['totalCount']; // needed to show count on view
$resultMY = new Zend_Paginator_Adapter_Null($myarr['totalCount']);
$paginator = new Zend_Paginator($resultMY);
$paginator->setItemCountPerPage(25);
$paginator->setPageRange(10);
$paginator->setCurrentPageNumber($page); // from url
$this->view->paginator = $paginator; // passed this for generation of pagination
我对这个问题没有合适的解决办法。但肯定有解决办法。您可以为用户提供用于分页的
Previous
和Next
按钮。