MVC newb로서, 계속 세부 사항을 포착합니다. 하나는 특히 내가 기대했던 것보다 더 오래 멈추는 것입니다. 쪽수 매기기. 페이지 매김을 모델이나 컨트롤러에서 사용해야합니까?MVC 및 페이지 매김
필자는 ZF를 사용하고 있으며 일부 SQL 데이터의 결과에 페이지 매김을하고 싶습니다.
MVC newb로서, 계속 세부 사항을 포착합니다. 하나는 특히 내가 기대했던 것보다 더 오래 멈추는 것입니다. 쪽수 매기기. 페이지 매김을 모델이나 컨트롤러에서 사용해야합니까?MVC 및 페이지 매김
필자는 ZF를 사용하고 있으며 일부 SQL 데이터의 결과에 페이지 매김을하고 싶습니다.
페이지 매김은 페이지 간 레코드를 분리하므로 모델에서 데이터를 수집하지만 프레젠테이션을 처리합니다. 드물게 발생하는 여러 페이지의 출력을 분할하는 모델의 본질이 아니라면 제 제안은 페이지 번호를 다루는 페이지 매김 로직을 컨트롤러에 넣는 것입니다.
컨트롤러에 넣은 코드를 최소화하기 위해 뷰 도우미를 활용하는 것도 좋습니다 (뚱뚱한 컨트롤러는 좋지 않습니다).
보기 도우미 제안 +1. –
페이지 매김에 대한 로직이 컨트롤러에 들어갑니다. 현재 페이지 번호와 같이 필요한 모든 데이터가 모델에 있어야합니다.
의심 스러울 때 데이터가 모델에 들어가고 데이터에 작용하는 모든 것이 컨트롤러에 저장됩니다.
마지막 문장이 완벽하게 이해되지만, "현재 페이지 번호는 모델에 있어야합니다"와 동의하지 않습니다. IMHO 모델은 페이지 매김을 신경 쓰지 않아야합니다. 데이터가 사용자에게 제공되는 방식을 알 필요가 없습니다. 컨트롤러의 모든 페이지 매김 로직을 유지하고 모델에 "LIMIT/OFFSET"커플을 가질 수 있으므로 호출 메소드에서 필요한 정확한 레코드를 지정할 수 있습니다. 모델이 페이지 매김을위한 것이 든 다른 것이지 여부를 모델에 알리지 않고. 물론, 내 2cc. – maraspin
Tom이 ViewModel을 의미했을 수 있습니다. 컨트롤러에서 페이징 정보를 뷰로 전달하지 않으면 ViewBag가없는 한 "페이지 4/10"과 같은 것을 어떻게 표시 할 수 있습니까? – pkr298
컨트롤러가 페이지 번호에 대한 매개 변수를 처리 한 다음이를 모델로 전달하면 모델에서 검색 할 레코드를 알 수 있습니다. 예를 들어
...$userModel->getAll((int) $_GET['page']);
(내가 젠드 프레임 워크를 모르겠지만, 아이디어가 명확해야한다)
는 것은 Zend_Paginator
이 어댑터의 매우 편리한 설정을 가지고,하지만입니다 . 이 중 하나는 Zend_Paginator_Adapter_DbSelect
이며 Zend_Db_Select
쿼리를 사용하여 SQL 쿼리를 효율적으로 페이지 매김 (예 : 결과 제한) 할 수 있습니다. 그래서 나는 왜 당신이 이들을 만들지 궁금해하는 이유를 알 수 있습니다. Zend_Paginator_Adapter_DbSelect
와 주입 Zend_Paginator
인스턴스를 반환하는 ...
public function fetchEntitiesAsPaginator();
: 당신은 실제로 모델이 최적의 장소인지를 토론 할 수 있지만, 나는 개인적으로처럼 내 모델의 방법을 만드는 문제가 없습니다 .
BTW :
필자는 개인적으로 프리젠 테이션을 위해 페이지 인쇄기를 개인적으로 고려하지 않습니다. 나는 단지 그것을 영화 롭게 된 LimitIterator라고 생각합니다. 당신이 그 관점에서 볼 때, 사물은 이미 조금 다르게 보이기 시작합니다. 그리고 부수적으로 : Zend_Paginator
의 프리젠 테이션 우려는 이미 어쨌든 Zend_View_Helper_PaginationControl
뷰 도우미에 의해 분리됩니다.
나는 ZF에 대해 들어 본 적이 없다. 무엇입니까? – Luke101
젠드 프레임 워크, 그것은 PHP 프레임 워크입니다. –