0

我明白这可能是不可能的,但有没有办法让 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;
4

1 回答 1

1

要返回Zend_Paginator带有可搜索迭代器(Zend_Db_Table_Rowset)的 a,请使用它,Zend_Paginator_Adapter_DbTableSelect()因为它返回一个行集对象,而不是Zend_Paginator_Adaoter_DbSelect()返回一个数组()。

Zend_Paginator

于 2012-05-22T06:13:46.643 回答