如何在 zend 框架中对 table 进行分页?
how to paginate a table in zend framework?
我正在使用 zend 框架并希望根据从 MySQL table 收到的数据对内容 table 进行分页。我只想在 html table.
中显示 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>
那么如何添加分页...
您没有说明是要在客户端还是服务器端分页。如果你想在客户端分页,最简单的方法就是使用 JQuery DataTables:
示例:
$(document).ready(function() {
$('.dataTable').DataTable();
} );
首先您需要使用 Paginator
class。假设您已经有一个工厂 class,它将 tablegateway 适配器实例传递给您的模型表 class。让我们创建一个函数来检索所有数据
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']);
我正在使用 zend 框架并希望根据从 MySQL table 收到的数据对内容 table 进行分页。我只想在 html table.
中显示 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>
那么如何添加分页...
您没有说明是要在客户端还是服务器端分页。如果你想在客户端分页,最简单的方法就是使用 JQuery DataTables:
示例:
$(document).ready(function() {
$('.dataTable').DataTable();
} );
首先您需要使用 Paginator
class。假设您已经有一个工厂 class,它将 tablegateway 适配器实例传递给您的模型表 class。让我们创建一个函数来检索所有数据
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']);