如何在zend框架中对表进行分页?

时间:2015-09-18 05:17:55

标签: php mysql zend-framework pagination

我正在使用zend框架,并希望根据从MySQL表接收的数据对目录进行分页。我想在html表中只显示10行。

这是我有的.phtml代码..

<div class="panel-body">
                        <?php
                            if(isset($this->ErrorMessage))
                                echo "<div class='alert alert-danger'>" . $this->ErrorMessage . "</div>";
                            if(isset($this->success))
                                echo "<div class='alert alert-success'>" . $this->success . "</div>";
                            echo $this->form;
                        ?>

                        <!-- / .table -->
                    <div class="table-responsive">
                              <table class="table table-striped table-hover dataTable table-bordered no-footer" role="grid">
                                <thead>
                                  <tr>
                                    <th>ID</th>
                                    <th>Name</th>

                                  </tr>
                                </thead>
                                <tbody>
                                    <?php if(isset($this->results)) { ?>
                                    <?php foreach($this->results as $result) { ?>
                                  <tr>
                                    <td><?php echo $result->id; ?></td>
                                    <td><?php echo $result->name; ?></td>

                                  </tr>
                                  <?php } ?>
                                  <?php } ?>
                                </tbody>
                              </table>
                        </div>

                    </div>

所以如何添加分页...

2 个答案:

答案 0 :(得分:0)

您没有说明是否要在客户端或服务器端进行分页。如果要在客户端进行分页,最简单的方法是使用JQuery DataTables:

https://www.datatables.net/

示例:

$(document).ready(function() {
    $('.dataTable').DataTable();
} );

答案 1 :(得分:0)

首先,您需要使用Paginator课程。假设您已经有一个工厂类,它将tablegateway适配器的实例传递给您的modeltable类。让我们创建一个函数来检索所有数据

public function fetchAll()
{
    $dbSelect = new DbSelect($select, $this->tableGateway->getAdapter(), $this->tableGateway->getResultSetPrototype());
    return new Paginator($dbselect);
}

在您的控制器中,您将为此做一些类似的事情。

public function indexAction()
{
    $this->view->setTemplate("application/index/index");
    $paginator = $this->getServiceLocator()->get("myModelTable")->fetchAll();
    $paginator->setCurrentPageNumber((int) $this->params("page", 1));
    $paginator->setItemCountPerPage(10);
    $this->view->paginator = $paginator;
    return $this->view;
}

在您的视图中,将部分放在某处(通常位于文件的底部)

echo $this->paginationControl($this->paginator, 'sliding', 'application/pagination.phtml', ['route' => 'application']);