【发布时间】:2011-07-19 05:46:24
【问题描述】:
我正在学习 Zend 框架。我让 Zend_Paginator 与数组适配器一起工作,但我在使用 Zend_Paginator::factory 静态方法时遇到了问题。问题是分页控制链接将我发送到正确的 URL,但是当我单击下一步或第 2、3 页等时,结果消失了。
我有两个来自数据库的表:一个文件表和一个 origination_office 表。文件表包含客户的姓名、地址等,发起办公室存储办公室名称(如 Tampa、Sarasota 等)。每个文件都与一个原始办公室相关联。
我的控制器:
public function searchAction()
{
$searchForm = new Application_Form_SearchForm();
if ($this->_request->getQuery()) {
if ($searchForm->isValid($this->_request->getParams())) {
$officeName = $this->_request->getParam('officeName');
$page = $this->_request->getParam('page');
}
$fileTable = new Application_Model_DbTable_File();
$this->view->paginator = $fileTable->getFilesByOfficeName($officeName, $page);
}
$this->view->searchForm = $searchForm;
}
这里是 getFilesByOfficeName() 方法:
public function getFilesByOfficeName($officeName = null, $page = 1, $count = 12, $range = 15, $scrolling = 'Sliding')
{
if (is_null($officeName)) {
$query = $this->select();
$paginator = Zend_Paginator::factory($query);
} else {
$oofTable = new Application_Model_DbTable_OriginationOffice();
$query = $oofTable->select();
$query->where('oof_name like ?', $officeName.'%');
if ($oofTable->fetchRow($query)) {
$origination_office = $oofTable->fetchRow($query);
$files = $origination_office->findDependentRowset($this);
$paginator = Zend_Paginator::factory($files);
} else {
return;
}
}
Zend_Paginator::setDefaultScrollingStyle($scrolling);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('_pagination_control.phtml');
$paginator->setDefaultItemCountPerPage($count);
$paginator->setDefaultPageRange($range);
$paginator->setCurrentPageNumber($page);
return $paginator;
}
【问题讨论】:
-
我不明白这个问题。失败点在哪里?
$fileTable->getFilesByOfficeName($officeName, $page);可以返回false,你排除你的分页器被退回了吗? -
@brady.vitrano 似乎返回了分页器(即不是假的),但是当我尝试单击任何其他页面时,分页器消失了(结果集?)因为 $_GET[ 'officeName'] 参数似乎是必需的。但我不确定如何继续提供它(即分页器控件中的链接不提供 officeName 值)。
标签: zend-framework zend-paginator