Zend_Paginator停止了工作

时间:2011-07-17 21:47:08

标签: zend-framework zend-paginator

我正在学习Zend Framework。我有Zend_Paginator使用数组适配器,但我在使用Zend_Paginator :: factory静态方法时遇到问题。问题是分页控制链接将我发送到正确的URL,但是当我点击下一个或第2,3页等时结果消失。

我有两个来自数据库的表:文件表和origination_office表。文件表具有客户的姓名,地址等,并且始发办公室存储办公室名称(如坦帕,萨拉索塔等)。每个文件都与一个发起办公室相关联。

我的控制器:

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

1 个答案:

答案 0 :(得分:0)

好的,我想我理解你的问题。您的链接未维护初始请求的状态及其URL查询字符串。

您可能希望修改部分视图(_pagination_control.phtml)以在链接中呈现当前查询字符串。

我需要看看你在偏见中做了什么来给出一个确切的答案,但是如果你将?$_SERVER['QUERY_STRING']添加到最后一个URL的末尾,这应该可行。见下例:

<!-- Your href may look different but notice I append the query string to the end -->
<a href="<?php echo $this->url(array('page' => $this->last)); ?>?<?php echo $_SERVER['QUERY_STRING'];?>">Last &raquo;</a>