내 ZF2 응용 프로그램에 모듈 Search
이 있습니다. 사용자는 검색 양식을 채우고 코스리스트를 얻습니다.Zend Framework 2에서 검색 모듈의 페이지 매김을 구현하는 방법은 무엇입니까?
이제 모듈에 페이지 매김을 추가하고 있습니다. paginator는 기본적으로 작동합니다. 페이지를 통해 데이터를 검색 할 수 있고 페이지 매김이 올바르게 표시됩니다 (페이지 당 10 개의 항목을 설정하는 dafault가있는 70 개의 검색된 코스에 대해 pagelinks 1-7).
하지만 여전히 유용하지 않습니다. 페이지 링크를 클릭하면 양식 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
예, 페이지 네비게이션 컨트롤의 뷰포트에 대한 네 번째 매개 변수는 $ params입니다.) https://github.com/zendframework/zf2/blob/master/library/Zend/View/Helper/PaginationControl.php#L85 i ASSUME (i don ' t KNOW)는 생성 된 링크에 첨부 될 쿼리 매개 변수입니다. – Sam