Я хочу разбить результаты поиска на страницы с помощью 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
Это не работает. Любые предложения, как реализовать пагинацию поиска?
EDIT: У меня есть HomeController
с двумя действиями, index и search action. 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;
}
Итак, как вы видите в действии поиска, есть проблема с процессом поиска, когда я разбиваю на страницы. Мне нужно как-то решить, искать или разбивать на страницы. Любые предложения по этому поводу?