Я хочу разбить результаты поиска на страницы, используя Zend_Paginator . Поэтому я передаю свои данные экземпляру paginator:
$paginator = new Zend_Paginator (
new Zend_Paginator_Adapter_DbSelect ( $data )
);
Данные возвращаются таким образом
public function getData($idArray){
$db = Zend_Db_Table::getDefaultAdapter();
$selectProgramme = new Zend_Db_Select($db);
$selectProgramme->from('programme')
->order('id DESC')
->where('id IN(?)', $idArray);
return $selectProgramme;
}
$idArray
предоставлено моими поисковыми реализациями. Все это прекрасно работает, и я получаю правильные данные и ссылки на страницы.
Однако я не могу разбить на страницы результат, потому что ссылки на страницы не действительны. Так что нормальная нумерация страниц будет иметь следующую ссылку:
mysite.de/home/index/page/1
в поиске у меня теперь
mysite.de/home/search/page/1
Это не работает. Любые предложения, как реализовать поисковую нумерацию страниц?
РЕДАКТИРОВАТЬ: У меня есть HomeController
с двумя действиями, индекс и поиск действий. IndexAction отображает все данные, и я могу разбить их на страницы.
public function indexAction(){
//...
$paginator = new Zend_Paginator(
new Zend_Paginator_Adapter_DbSelect($data)
);
$paginator->setItemCountPerPage(16)
->setPageRange(20)
->setCurrentPageNumber($this->_getParam('page', 1));
$this->view->data = $paginator;
}
searchActions обрабатывает процесс поиска:
public function searchAction(){
$response = $solr->search($this->getRequest()->getParam('search', null));
//...if items found get the data exactly the same way as in the
// index action, using Zend_Paginator_Adapter_DbSelect
$paginator = new Zend_Paginator(
new Zend_Paginator_Adapter_DbSelect($data)
);
$paginator->setItemCountPerPage(16)
->setPageRange(20)
->setCurrentPageNumber($this->_getParam('page', 1));
$this->view->data = $paginator;
}
Так что, как вы видите в поисковом действии, при поиске страниц возникает проблема с процессом поиска. Мне нужно как-то решить, искать или разбивать на страницы. Есть предложения по этому поводу?