Перестал работать Zend_Paginator - PullRequest
1 голос
/ 18 июля 2011

Я изучаю 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 голосов
/ 19 июля 2011

Хорошо, я думаю, что понимаю вашу проблему.Ваши ссылки не поддерживают состояние вашего первоначального запроса, и это строка запроса 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>
...