multiple zend pagination controls via ajax and jquery

Can someone help me achieve multiple zend pagination in a view using ajax. I have managed to achieve single pagination no problem, but now i want to perform more than 1.

this is my setup:-

added to the bootstrap:-

public function _initPaginator(){
    Zend_Paginator::setDefaultScrollingStyle('Sliding');
    Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination_control.phtml');   
}

'pagination_control.phtml' has been taken from the zend framework manual.

added to the controller:-

public function init()
{
    parent::init();

    $ajaxContext = $this->_helper->getHelper('AjaxContext');
    $ajaxContext->addActionContext('view', 'html')
                ->initContext();
}

added this to the controller action:-

public function viewAction()
{

    $query = $this->_em->createQueryBuilder()
       ->select('t')
       ->from('Ajfit\Entity\Ticket', 't')
       ->where('t.engineerFk = :engineer')
       ->orderBy('t.dt', 'desc')
       ->setParameter('engineer', $engineer)
       ->getQuery();

    $paginator =  new Paginator($query);
    $adapter->getIterator();

    $zend_paginator = new \Zend_Paginator($adapter);
    $zend_paginator->setItemCountPerPage(3)
                   ->setCurrentPageNumber($this->_getParam('page'));

    $this->view->ticketPaginator = $zend_paginator;
}

added this to the view:-

<div>
    <div id="ticket-history">
       <?php 
             echo $this->render('profile/view.ajax.phtml'); 
         ?>
       </div> 
</div>

<script>
    $(document).ready(function() {
        $('.pagination-control').find('a').live('click', function(e) { 
            var link = $(this); 
            $('#ticket-history').load(link.attr('href'), { format: 'html' }); 
            return false;
        });
    });
</script>

my 'profile/view.ajax.phtml' script contains:-

<?php

     echo '<table border="0" width="100%" cellspacing="3" cellpadding="3"><tr>';

     foreach($this->ticketPaginator as $ticket){
         echo '<td>' . $ticket->getSubject() . '</td>';
     }

     echo '</tr></table>';
 ?>

<?php 
    echo $this->paginationControl($this->ticketPaginator);
?>

This all works fine, however, how would one go about adding a second or third paginator to this view for a different doctrine entity?

Any help would be much apprieciated.

Thanks

Andrew

Upvotes: 0

Views: 2231

Answers (2)

wantime
wantime

Reputation: 1

This problem can be resolved if you manipulate the pagination links to let it call the other action.

For example: In the View Part, you can use the fourth parameter of the paginationControl method to define the links which refers to another action. This link should then be called in pagination_control.phtml.

Upvotes: 0

Zuber Surya
Zuber Surya

Reputation: 869

for that you have to use multiple addActionContext in init()

    $this->_helper->ajaxContext->addActionContext('view', 'html')->initContext();
    $this->_helper->ajaxContext->addActionContext('list', 'html')->initContext();

and you can continue

add action in controller as listAction() for paginator create file as list.ajax.phtml also and add required code inside them

Upvotes: 1

Related Questions