2013-02-01 2 views
1

저는 ZF2에 첫 번째 앱을 쓰고 있습니다. 페이지 매김 시스템을 만들고 싶습니다.ZF2의 모든 컨트롤러에 동일한 페이징 인이 있습니다.

현재 내 컨트롤러에서이 같은이 : 나는 예를 들어, 변경하려는 경우

$pagLimit = $this->params()->fromQuery('limit', 1000); 
$pagPage = $this->params()->fromQuery('page', 1); 
$orderDir = $this->params()->fromQuery('dir', 'ASC'); 
$orderBy = $this->params()->fromQuery('column', 'id'); 

$result = $this->getMapper()->getList($orderDir, $orderBy); 


$paginator = new Paginator(new ArrayAdapter($result)); 
$paginator->setItemCountPerPage($pagLimit); 
$paginator->setCurrentPageNumber($pagPage); 

내 솔루션은 꽤 좋은 아니라고 생각 ..

페이지 당 항목의 기본 제한, 모든 컨트롤러를 수정해야합니다. 또한 데이터 목록을 가져 오는 모든 매퍼 메서드에 대해 두 가지 인수를 보내야한다는 것을 기억해야합니다.

첫 번째 생각은 setPaginationParams() 및 setPaginator ($ data)와 같은 메서드를 사용하여 상속 ("MyController")을 사용하는 것이 었습니다.

그런 다음 모든 컨트롤러에서 "내 컨트롤러"메서드를 호출해야한다는 것을 기억해야합니다.

하지만 내 모듈의 모든 컨트롤러에 대해 동일한 페이징 관리자를 구현하는 더 좋은 방법이 있습니까? MVC 이벤트? 맞춤 클래스를 만들고 DI를 사용합니까?

이 기능을 구현하는 가장 좋은 방법은 무엇입니까?

나에게 힌트를 주시겠습니까?

저는 ZF2 및 OOP 개념을 처음 사용합니다. :

답변

0

당신은 항상 자신 만의 페이지 매거기를 확장 할 수 있고 기본값을 설정 할 수 있습니다. 요청 개체 또는 params 개체를 전달한 다음 Paginator가 내부적으로 설정을 저장하기 위해 내부적으로 처리하도록 할 수도 있습니다 기본값 등

관련 문제