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
インデックスアクションと検索アクションの2つのアクションがあります。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;
}
したがって、検索アクションで見られるように、ページ付けするときに検索プロセスに問題があります。検索するかページ付けするかをどうにかして決める必要があります。それについて何か提案はありますか?