2013-09-16 3 views
1

나는 결과가 모두 잘 작동, 젠드 매기기를 사용하여 설정하지만 난 등 이베이, 아마존과 같은 체크 박스 옵션을 사용하여 결과를 필터링 할 필요가 결과젠드 매기기 필터 ...

내가 젠드 필터에 대해 읽고 있지만, 어디서부터 시작해야할지 모르겠다.

누구나이 경험을 해 주시겠습니까?

감사

+0

여기에 코드를 게시 할 수 있습니까? – RDK

+0

페이징기에 어떤 어댑터를 사용합니까? –

답변

0

체크 박스 옵션은 Zend_Paginator와는 아무 상관이 없습니다.

Zend_Paginator는 결과를 페이지 매기기에 도움이되는 단지 도우미 클래스이며, LIMIT 절을 추가하고 결과 템플릿을 더 쉽게 만들 수 있습니다.

, 당신은 뒤에 논리를 개발하거나 SOLR 같은 검색 엔진을 사용할 필요가 당신이 'Faceted search'라고 대한 lookig하고 그 자동

1

Zend_Filter이처럼 뭔가에 뭔가를 변환하는 것입니다을 생성 할 수 있습니다 역자.

Zend_Paginator의 큰 장점은 페이지별로 데이터를 검색한다는 것입니다. 몇 백만 개의 테이블에서 30 개의 항목을 표시하려고합니다. 모든 데이터를 검색 한 다음 적절하게 필터링하여 30 개 항목을 추출하면 매우 느린 프로세스가됩니다.

데이터베이스에서 항목을 검색한다고 가정하면 DbSelect 또는 DbTableSelect 어댑터를 사용해야합니다. 한 테이블에서 검색하는 경우 DbTableSelect을 사용하고 두 개 이상의 테이블에서 조인하여 검색하는 경우 DbSelect을 사용하십시오.

모든 페이지의 모든 항목을 검색하는 $select 개체를 얻으면 페이지 매기기는 한도 및 오프셋을 설정하여 페이지별로 항목을 검색합니다. 예를 들어 페이지 당 30 개의 항목을 표시하고 페이지 번호 3을 표시하려는 경우 페이징 담당자는 $select->limit(30, 60)을 설정합니다 (페이징 담당자가 사용자를 대신해이 작업을 수행 할 필요는 없습니다). 이를 위해, 컨트롤러에서 다음을 수행하십시오

// pass ?page=N in the url 
$pageNumber = $this->getRequest()->getParam('page', 1); 
// itemsPerPage can also be read from the url 
$itemsPerPage = 30; 
// this $select must retrieve all items in all pages 
$select = new Zend_Db_Select(); 
$select->from(...) 
    // eventually joins, where, or order statements 
$paginator = new Zend_Paginator($select); 
$paginator->setCurrentPageNumber($pageNumber); 
$paginator->setItemCountPerPage($itemsPerPage); 

당신은 마지막 항목과 페이지 매김 컨트롤을 렌더링하는 템플릿에 매기기를 통과해야합니다. 그래서 그래서이 매기기의 기본 기능입니다

http://framework.zend.com/manual/1.12/en/zend.paginator.usage.html#zend.paginator.rendering에로 템플릿을

$this->view->paginator = $paginator; 

를 추가하고 편집 할 수 있습니다. 이게 도움이 되길 바란다. Array 또는 Iterator과 같은 다른 유형의 어댑터를 사용하는 경우 매우 유사합니다.