Думая об этом тоже прямо сейчас. Вы уже нашли подходящее решение?
Мои мысли до сих пор
1) избегайте использования чего-либо вроде Zend_Paginator и просто делайте все самостоятельно . Т.е. вы получаете параметры из среды (объект запроса или некоторый файл конфигурации и т. д.), например itemCountPerPage, currentPageNumbe, вы передаете их в метод уровня обслуживания (или в вашем случае это просто маппер), например
$comments = $this->getCommentsMapper()->getPage($itemCountPerPage, $currentPage);
затем вы запрашиваете общую сумму товара у своего маппера (это полностью зависит от вас, делать это в отдельном запросе или нет), например
$totalComments = $this->getCommentsMapper()->getTotal();
Так что теперь у вас есть все данные, чтобы сделать «представление управления разбиением на страницы». Говоря «Zendy», вы передаете все эти переменные в представление и сами выполняете управление разбиением на страницы.
2) Разработать адаптер для Zend_Paginator , который бы ЛИГЛ о его состоянии. То есть вместо того, чтобы иметь все элементы, он просто будет иметь некоторую часть, которая вам нужна, но вы вручную установите значение «общее количество» и другие. Мне не очень нравится такой подход.
3) Добавьте некоторый специальный объект домена под названием «Страница», который будет возвращен из картографов или сервисных слоев. Такой объект будет инкапсулировать все те переменные, которые нам нужны для построения представления управления разбиением на страницы. При этом мы сможем сделать следующее:
`
$ commentsService = $ this-> getCommentsService ();
$ CommentsService-> setItemCountPerPage (10); // скажем, 10 взято из некоторого config.ini
$ commentsPage = $ this-> getCommentsService () -> getPage (12);
$ this-> view-> commentsPage = $ commentsPage;
`
Где-то в представлении мы можем получить эти
`
$ CommentsPage-> GetItems (); // коллекция комментариев
$ commentsPage-> getCurrentPageNumber ();
$ commentsPage-> getTotalItemsCount ();
`
, что достаточно для создания элемента управления нумерацией страниц.
Это все.
В настоящее время я выбираю между первым и третьим подходами, вероятно, пойдет с третьим.