0

有人可以帮助我在使用 ajax 的视图中实现多个 zend 分页。我已经成功实现了单分页没问题,但现在我想执行超过 1 个。

这是我的设置:-

添加到引导程序:-

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

'pagination_control.phtml' 取自 zend 框架手册。

添加到控制器:-

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

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

将此添加到控制器操作中:-

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;
}

将此添加到视图中:-

<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>

我的 'profile/view.ajax.phtml' 脚本包含:-

<?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);
?>

这一切都很好,但是,如何为不同的学说实体在此视图中添加第二个或第三个分页器?

任何帮助将不胜感激。

谢谢

安德鲁

4

2 回答 2

1

addActionContext为此,您必须使用多个init()

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

你可以继续

在控制器中添加操作与listAction()分页器一样创建文件list.ajax.phtml并在其中添加所需的代码

于 2012-06-15T14:11:47.867 回答
0

如果您操纵分页链接以使其调用其他操作,则可以解决此问题。

例如:在 View Part 中,您可以使用paginationControl方法的第四个参数来定义指向另一个动作的链接。然后应该调用这个链接pagination_control.phtml

于 2012-10-10T15:36:32.893 回答