2012-05-20 80 views
0

我明白這可能是不可能的,但有沒有辦法使Zend Paginate進入特定項目(記錄)?Zend Paginate - 找到結果中的特定記錄

結果我希望能讓我在結果的表格列表中尋找特定的記錄,並顯示與名稱定位標記相結合的相應頁面(在所有可用頁面內)以顯示特定記錄。爲了澄清:如果我將結果作爲Zend_Db_Table_Rowset_Abstract,我將以與$ rowset-> seek(8)類似的方式使用seek()方法。儘管我不相信DbSelect適配器返回的結果是SeekableIterator?

我的映射器中的代碼(使用表數據網關模式):

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

對於初學者'... Adapter_DbSelect()'返回一個數組,你可能會看到,如果你的代碼將與'... Adapter_DbTableSelect()'因爲它返回一個行集對象。參考文獻[Zend_Pagainator](http://framework.zend.com/manual/en/zend.paginator.usage.html) – RockyFord

+0

這很有用,謝謝!如果您想將其作爲答案,我會將其標記爲已接受的答案。 – Asciant

回答

1

要使用可搜索的迭代器返回一個Zend_Paginator(Zend_Db_Table_Rowset)使用Zend_Paginator_Adapter_DbTableSelect()因爲它返回一個行集對象,而不是返回數組()的Zend_Paginator_Adaoter_DbSelect()

Zend_Paginator