1

我有一个使用 Zend Paginator 的结果集,它一切正常,但我需要使用 eBay、Amazon 等上的复选框选项来过滤结果。

我已阅读有关 Zend 过滤器的信息,但不知道从哪里开始。

请问有人有这方面的经验吗?

谢谢

约翰

4

2 回答 2

1

Zend_Filter 是将某物转化为某物,就像一个翻译器。

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

假设您正在从数据库中检索您的项目,您应该使用DbSelectDbTableSelect适配器。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;

并编辑模板,如http://framework.zend.com/manual/1.12/en/zend.paginator.usage.html#zend.paginator.rendering

所以这是分页器的基本功能。我希望这有帮助。Array如果您使用其他类型的适配器,例如或,这将非常相似Iterator

于 2013-09-23T18:02:07.213 回答
0

复选框选项与 Zend_Paginator 无关。

Zend_Paginator 只是一个帮助您对结果进行分页的 Helper 类,它添加了 LIMIT 子句并使模板化结果更容易,仅此而已。

您要查找的内容称为“分面搜索”,您必须开发其背后的逻辑或使用像 Solr 这样可以自动生成它的搜索引擎

于 2013-09-23T16:52:26.037 回答