Zend framework Zend Paginator过滤器结果

Zend framework Zend Paginator过滤器结果,zend-framework,zend-paginator,Zend Framework,Zend Paginator,我有一个使用Zend Paginator的结果集,一切正常,但我需要使用复选框选项(如易趣、亚马逊等)过滤结果 我读过Zend filter,但不知道从哪里开始 请问有没有人有这方面的经验 谢谢 John复选框选项与Zend_Paginator无关 Zend_Paginator只是一个帮助器类,它可以帮助您对结果进行分页,它添加了限制子句并使结果模板化变得更容易,仅此而已 你要找的东西叫做“”,你必须开发它背后的逻辑,或者使用像Solr这样的搜索引擎自动生成它。复选框选项与Zend_Pagina

我有一个使用Zend Paginator的结果集,一切正常,但我需要使用复选框选项(如易趣、亚马逊等)过滤结果

我读过Zend filter,但不知道从哪里开始

请问有没有人有这方面的经验

谢谢


John

复选框选项与Zend_Paginator无关

Zend_Paginator只是一个帮助器类,它可以帮助您对结果进行分页,它添加了限制子句并使结果模板化变得更容易,仅此而已


你要找的东西叫做“”,你必须开发它背后的逻辑,或者使用像Solr这样的搜索引擎自动生成它。复选框选项与Zend_Paginator无关

Zend_Paginator只是一个帮助器类,它可以帮助您对结果进行分页,它添加了限制子句并使结果模板化变得更容易,仅此而已


你要找的东西叫做“”,你必须开发它背后的逻辑,或者使用像Solr这样的搜索引擎自动生成它。Zend_Filter就是把一些东西转换成一些东西,比如翻译

Zend_Paginator的巨大优势在于它逐页检索数据。计算出您想要显示数百万表格中的30个项目。如果您检索所有数据,然后进行相应的过滤以删除这30项,那么这将是一个非常缓慢的过程

假设您正在从数据库检索项目,您应该使用
DbSelect
DbTableSelect
适配器。如果从一个表中检索,请使用
DbTableSelect
;如果通过联接从多个表中检索,请使用
DbSelect

一旦您有了要检索所有页面中所有项目的
$select
对象,分页器将通过设置限制和偏移量逐页检索项目。例如,如果您每页显示30个项目,并且希望显示页码3,分页器将设置
$select->limit(30,60)
(您不需要这样做,分页器会为您执行此操作)。要完成此操作,请尝试在控制器中执行以下操作:

// pass ?page=N in the url
$pageNumber = $this->getRequest()->getParam('page', 1);
// itemsPerPage can also be read from the url
$itemsPerPage = 30;
// this $select must retrieve all items in all pages
$select = new Zend_Db_Select();
$select->from(...)
    // eventually joins, where, or order statements
$paginator = new Zend_Paginator($select);
$paginator->setCurrentPageNumber($pageNumber);
$paginator->setItemCountPerPage($itemsPerPage);
最后需要将分页器传递给呈现项和分页控件的模板。所以加上

$this->view->paginator = $paginator;
并编辑模板,如中所示


这是paginator的基本功能。我希望这有帮助。如果您使用其他类型的适配器,如
数组
迭代器
,Zend\u Filter是将某个东西转换为某个东西,如转换器,则情况非常类似

Zend_Paginator的巨大优势在于它逐页检索数据。计算出您想要显示数百万表格中的30个项目。如果您检索所有数据,然后进行相应的过滤以删除这30项,那么这将是一个非常缓慢的过程

假设您正在从数据库检索项目,您应该使用
DbSelect
DbTableSelect
适配器。如果从一个表中检索,请使用
DbTableSelect
;如果通过联接从多个表中检索,请使用
DbSelect

一旦您有了要检索所有页面中所有项目的
$select
对象,分页器将通过设置限制和偏移量逐页检索项目。例如,如果您每页显示30个项目,并且希望显示页码3,分页器将设置
$select->limit(30,60)
(您不需要这样做,分页器会为您执行此操作)。要完成此操作,请尝试在控制器中执行以下操作:

// pass ?page=N in the url
$pageNumber = $this->getRequest()->getParam('page', 1);
// itemsPerPage can also be read from the url
$itemsPerPage = 30;
// this $select must retrieve all items in all pages
$select = new Zend_Db_Select();
$select->from(...)
    // eventually joins, where, or order statements
$paginator = new Zend_Paginator($select);
$paginator->setCurrentPageNumber($pageNumber);
$paginator->setItemCountPerPage($itemsPerPage);
最后需要将分页器传递给呈现项和分页控件的模板。所以加上

$this->view->paginator = $paginator;
并编辑模板,如中所示


这是paginator的基本功能。我希望这有帮助。如果您正在使用其他类型的适配器,如
Array
Iterator

您可以在此处发布部分代码吗?您的分页器使用哪种适配器?您可以在此处发布部分代码吗?您的分页器使用哪种适配器?