Satt igår och jobbade på ett projekt där jag använder mig av Doctrine & ramverket Zend. Självklart ville jag använda mig av någon typ av paginator för att smidigt kunna dela upp mina modeller på flera sidor.
library/App/Paginator/Adapter/Doctrine.php
class App_Paginator_Adapter_Doctrine
implements Zend_Paginator_Adapter_Interface
{
protected $_select;
public function __construct( Doctrine_Query $select )
{
$this->_select = $select;
}
public function getItems($offset, $itemCountPerPage)
{
return $this->_select->offset($offset)->limit($itemCountPerPage)->execute();
}
public function count()
{
return $this->_select->count();
}
}
application/controllers/IndexController.php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
/**
* Paginator
*/
$adapter = new App_Paginator_Adapter_Doctrine(Doctrine_Query::create()->select()->from('Model_Foo f'));
$paginator = new Zend_Paginator( $adapter );
$paginator->setItemCountPerPage( 5 )
->setCurrentPageNumber( $this->_getParam( 'page', 1 ) )
->setPageRange( 8 );
$this->view->paginator = $paginator;
}