我很欣赏这可能是不可能的,但有没有办法让Zend Paginate去特定的项目(记录)?
我想要的结果是允许我在结果列表中查找特定记录,并显示适当的页面(在所有可用页面中)与名称锚标记相结合以显示特定记录。
澄清:如果我将结果作为Zend_Db_Table_Rowset_Abstract,我会以类似于$ rowset-> seek(8)的方式使用seek()方法;虽然我不相信DbSelect适配器返回的结果是SeekableIterator?
我的Mapper中的代码(使用表数据网关模式):
public function paginate($where = array(), $order = null)
{
$select = $this->getDbTable()->select()->from($this->getTableName(), $this->getTableFields());
foreach ($where as $key => $value) {
$select->where($key, $value);
}
$select->order($order);
$adapter = new Zend_Paginator_Adapter_DbSelect($select);
$paginator = new Zend_Paginator($adapter);
return $paginator;
}
在我的控制器中:
$cache_id = sha1('list');
$mapper = new Application_Model_Galleries_Mapper();
if(!($data = Zend_Registry::get('cache')->load($cache_id))) {
$data = $mapper->paginate(array(), $sort);
Zend_Registry::get('cache')->save($data, $cache_id, array('list'), 7200);
}
$data->setCurrentPageNumber($this->_getParam('page'));
$data->setItemCountPerPage(30);
$this->view->paginator = $data;
答案 0 :(得分:1)
要返回带有可搜索迭代器(Zend_Db_Table_Rowset)的Zend_Paginator
,请使用Zend_Paginator_Adapter_DbTableSelect()
,因为它返回一个rowset对象,而不是Zend_Paginator_Adaoter_DbSelect()
返回一个数组()。