我有一个使用 Zend Paginator 的结果集,它一切正常,但我需要使用 eBay、Amazon 等上的复选框选项来过滤结果。
我已阅读有关 Zend 过滤器的信息,但不知道从哪里开始。
请问有人有这方面的经验吗?
谢谢
约翰
我有一个使用 Zend Paginator 的结果集,它一切正常,但我需要使用 eBay、Amazon 等上的复选框选项来过滤结果。
我已阅读有关 Zend 过滤器的信息,但不知道从哪里开始。
请问有人有这方面的经验吗?
谢谢
约翰
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;
并编辑模板,如http://framework.zend.com/manual/1.12/en/zend.paginator.usage.html#zend.paginator.rendering
所以这是分页器的基本功能。我希望这有帮助。Array
如果您使用其他类型的适配器,例如或,这将非常相似Iterator
。
复选框选项与 Zend_Paginator 无关。
Zend_Paginator 只是一个帮助您对结果进行分页的 Helper 类,它添加了 LIMIT 子句并使模板化结果更容易,仅此而已。
您要查找的内容称为“分面搜索”,您必须开发其背后的逻辑或使用像 Solr 这样可以自动生成它的搜索引擎