我目前正在尝试对从我的数据库返回的信息进行分页。
我目前使用 Zend 1.12 版,对 Zend 和 MVC 来说非常新。因此,我将不胜感激任何关于更好地布局我的代码的建议,以符合最佳实践以及正确的方向,以使我的分页代码正常工作
到目前为止,我已经查看了几个教程: This、This、This和 This,并查看了几个 stackoverflow 问题,包括This question。但我必须错过一些东西,因为我无法让它工作。
我设法将显示的结果集限制为我选择的数量(30),并且我设法显示了分页控件。
不幸的是,我的分页控件不起作用。
问题
当我单击“下一步”时,地址栏将从站点/模型/控制器转到站点/模型/控制器/页面/2,但显示不会改变。
当我单击 Last 时,地址栏将从
site/model/controller/page/2 到 site/model/controller/page/29 (这是我希望分页后的页数)。显示不变。
我无法单击上一个(即使我在第 29 页),因为它不是活动链接(它在 HTML 代码中被禁用)。
我的代码如下:
模型
public function readAll()
{
$tableData = new Application_Model_DbTable_Bins();
$table = $tableData->fetchAll();
if (!empty($table)) {
return $table;
} else {
return 'There is no information held within this table';
}
}
控制器
public function readallAction($items = 10, $page = 1)
{
$readAll = new Application_Model_Bins();
$paginator = Zend_Paginator::factory($readAll->readAll());
$paginator->setItemCountPerPage($items);
$paginator->setCurrentPageNumber($page);
if ( empty ( $page ) ) { $page = 1; }
$this->view->readall = $paginator;
}
看法
<div id="view-content">
<form method='post' id="bins" name="myform">
<table border="1">
<th>BIN</th>
<th>COMP_DIV</th>
<th>STY_RET_TYPE</th>
<th>STY_PDT_TYPE</th>
<th>PRICE_POINT</th>
<th>STORAGE_TYPE</th>
<?php echo $this->partialLoop('partials/bins.phtml', $this->readall); ?>
<td><input type=checkbox value="Check All" onClick="this.value=check(this.form.list)" /></td>
</table>
<input type='submit' name='submit' value='move' />
</form>
<?php echo $this->paginationControl($this->readall, 'Sliding', 'pagination_controls.phtml'); ?>
分页控件
<?php if ($this->pageCount): ?>
<!-- first Page Link-->
<?php if (isset($this->previous)): ?>
<a href="<?php echo $this->url(array('page' => $this->first)); ?>">First</a> |
<?php else: ?>
<span class="disabled">First</span> |
<?php endif; ?>
<!-- previous Pagelink-->
<?php if (isset($this->previous)): ?>
<a href="<?php echo $this->url(array('page' => $this->previous)); ?>">< Previous</a> |
<?php else: ?>
<span class="disabled">< Previous</span> |
<?php endif; ?>
<!-- next Page link-->
<?php if (isset($this->next)): ?>
<a href="<?php echo $this->url(array('page' => $this->next)); ?>">Next ></a> |
<?php else: ?>
<span class="disabled">Next ></span> |
<?php endif; ?>
<!-- Last page link-->
<?php if (isset($this->next)): ?>
<a href="<?php echo $this->url(array('page' => $this->last)); ?>">Last</a>
<?php else: ?>
<span class="disabled">Last</span>
<?php endif; ?>