0

これは不可能かもしれませんが、Zend Paginate を特定のアイテム (レコード) に移動させる方法はありますか?

私が望む結果は、表形式の結果リストで特定のレコードを検索し、特定のレコードを表示する名前アンカー タグと組み合わせて (利用可能なすべてのページ内の) 適切なページを表示することを可能にします。

明確にするために: Zend_Db_Table_Rowset_Abstract として結果が得られた場合、 $rowset->seek(8); と同様の方法で seek() メソッドを使用します。DbSelect アダプターから返された結果が SeekableIterator だとは思いませんが?

Mapper 内のコード (Table Data Gateway パターンを使用):

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)を使用してを返すには、array()を返すのではZend_Paginator_Adapter_DbTableSelect()なく、行セットオブジェクトを返すときにを使用します。Zend_Paginator_Adaoter_DbSelect()

Zend_Paginator

于 2012-05-22T06:13:46.643 に答える