Zend Paginator & Doctrine

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;
    }
Detta inlägg är publicerat i Doctrine, Tips & Trix, Zend och taggat , , . Bokmärk permalink. Skriv en kommentar eller lämna en trackback: Trackback URL.

Skriv en kommentar

Din epostadress delas eller publiceras aldrig Obligatoriska fält är markerade med *

*
*

Du kan använda dessa HTML-taggar och attribut: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>