Ich verwende meist zend_db_table mit einem Paginator, das Problem ist, dass es zend_db_rows statt der Domain-Objekte von meinem Datamapper zurückgibt.
Sagen wir:
class Content_Model_ArticleMapper {
/*
* @param Zend_Db_Select $select
* @return Zend_Paginator
*/
public function getPaginator($select = null){}
}
Ich kann es hacken, indem ich die Methode _loadAndReturnRow in einem eigenen Rowset überschreibe Allerdings ist das ziemlich hässlich, da ich keine Zend_Db_Row mehr habe wenn ich die Tabelle abfrage. Und ich verliere auch die Methoden wie save die ich nicht auf dem Domain Objekt replizieren will. :
class Content_Model_DbTable_Rowset_Articles extends Zend_Db_Table_Rowset {
protected function _loadAndReturnRow($position)
{
if (!isset($this->_data[$position])) {
require_once 'Zend/Db/Table/Rowset/Exception.php';
throw new Zend_Db_Table_Rowset_Exception("Data for provided position does not exist");
}
// do we already have a row object for this position?
if (empty($this->_rows[$position])) {
$this->_rows[$position] = new Content_Model_Article($this->_data[$position]);
}
// return the row object
return $this->_rows[$position];
}
}
So meine Frage, wie Sie dies schön tun? :) Schreiben Sie benutzerdefinierte Paginator-Adapter?