Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Model
- {
- //...
- /**
- * @return array Array in the form: array( 'paginator' => obj, 'resultset' => obj )
- */
- public function getAll( $where = array(), $current_page = null, $per_page = null );
- //...
- }
- class Model_UserDataMapper {
- public function getUsers($select, $page) {
- $pager = Zend_Paginator::factory($select);
- $pager->setItemCountPerPage(10)
- >setCurrentPageNumber($page)
- ->setFilter(new Zend_Filter_Callback(array($this,'getUserObjects')));
- }
- public function getUserObjects($rows) {
- $users = array();
- foreach($rows as $row) {
- $user = new Model_User($row->toArray());
- $users[] = $user;
- }
- return $users;
- }
- }
- $select = $db->from('users')->order('name');
- $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbSelect($select));
- $paginator->setCurrentPageNumber($this->_getParam('page', 1));
- $paginator->setItemCountPerPage(25);
- $this->view->paginator = $paginator;
- $items = new Items();//setup model as usual in controller
- $this->view->paginator = Zend_Paginator::factory($items->getAll()); //initialize the pagination in the view NB getAll is just a custom function to encapsulate my query in the model that returns a Zend_Db_Table_Rowset
- $this->view->paginator->setCurrentPageNumber($page); //$page is just the page number that could be passed in as a param in the request
- $this->view->paginator->setView($this->view);
- <?php foreach($this->paginator as $item):?>
- <?=$item->someProperty?>
- <?php endforeach;?>
- class ModelSet extends Zend_Paginator_Adapter_DbSelect
- {
- public function __construct( ... )
- {
- // Create a new Zend_Db_Select ($select) representing the desired
- // data set using incoming criteria
- parent::__construct($select);
- }
- ...
- }
- $modelSet = new ModelSet( ... );
- ...
- $pager = new Zend_Paginator( $modelSet );
- $pager->setItemCountPerPage( ... );
- $pager->setCurrentPageNumber( ... );
- ...
- // The first time the record set is actually retrieved will be at the beginning
- // of the first traversal
- foreach ($pager as $record)
- {
- // ... do stuff with the record ...
- }
Add Comment
Please, Sign In to add comment