我在我的ZF2應用程序中有一個模塊Search
。用戶填寫搜索表單並獲取課程列表。如何在Zend Framework 2中爲搜索模塊實現分頁?
現在我將分頁添加到模塊中。分頁器基本上可以工作:我可以通過它檢索數據並且分頁顯示正確(頁面鏈接1-7用於70個找到的課程,其中每個頁面默認設置10個項目)。
但它仍然不可用。當我點擊頁面鏈接時,表單POST數據將丟失。我知道 - 它無法工作,我如何實現它(請參閱下面的代碼)。但我不知道,如何正確地做到這一點,以便檢查表單數據並能夠使用分頁。
這是我的代碼:
表類搜索\型號\ CourseTable
class CourseTable {
...
// without pagination
// public function findAllByCriteria(CourseSearchInput $input) {
// with pagination
public function findAllByCriteria(CourseSearchInput $input, $pageNumber) {
...
$select = new Select();
$where = new Where();
$having = new Having();
...
// without pagination
// $resultSet = $this->tableGateway->selectWith($select);
// return $resultSet;
// with pagination
$adapter = new \MyNamespqce\Paginator\Adapter\DbSelect($select, $this->tableGateway->getAdapter());
$paginator = new \Zend\Paginator\Paginator($adapter);
$paginator->setCurrentPageNumber($pageNumber);
return $paginator;
}
...
}
搜索\控制器\ SearchController
class SearchController extends AbstractActionController {
public function searchCoursesAction() {
$form = $this->getServiceLocator()->get('Search\Form\CourseSearchForm');
$request = $this->getRequest();
if ($request->isPost()) {
$courseSearchInput = new CourseSearchInput();
$form->setInputFilter($courseSearchInput->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$courseSearchInput->exchangeArray($form->getData());
// without pagination
// $courses = $this->getCourseTable()->findAllByCriteria($courseSearchInput);
// with pagination
$page = $this->params()->fromRoute('page');
$paginator = $this->getCourseTable()->findAllByCriteria($courseSearchInput, $page);
} else {
$paginator = null;
}
} else {
$paginator = null;
}
return new ViewModel(array(
'form' => $form,
// without pagination
// 'courses' => $courses,
// with pagination
'paginator' => $paginator,
'cities' => ...
));
}
...
}
如何得到它的工作?
搜索結果和搜索頁面應該通過'$ _GET',因此GET-Params可以用於將來的分頁鏈接。這就是它的全部。 – Sam
只要切換到'$ _GET',問題就不會解決。 「GET-Params」可以用於未來的分頁鏈接嗎?參數應該傳遞給視圖,然後傳遞給'PaginationControl'視圖助手? – automatix
是的,paginationControl viewHelper的第四個參數是$ params;)https://github.com/zendframework/zf2/blob/master/library/Zend/View/Helper/PaginationControl.php#L85我假設(我不' t知道)這些查詢參數是附加到生成的鏈接。 – Sam