ИспользованиеРазбиение наборов данных на страницы
Для разбиения элементов данных на страницы
Zend_Paginator должен иметь обобщенный доступ к этим
данным. Поэтому доступ к данным осуществляется через адаптеры к
источникам данных. В поставку Zend Framework входят несколько
адаптеров:
Адаптеры для Zend_PaginatorАдаптерОписаниеArrayИспользует PHP-массивDbSelect
Использует экземпляр
Zend_Db_SelectIterator
Использует экземпляр
IteratorNull
Не использовать Zend_Paginator
для разбиения на страницы.
Но и в этом случае вы можете воспользоваться
возможностями постраничной навигации.
При создании экземпляра класса Zend_Paginator, следует
передать адаптер его конструктору:
Для удобства вы можете воспользоваться статическим методом
factory() для адаптеров, входящих в поставку Zend
Framework:
В случае использования адаптера Null вы должны передавать
его конструктору количество элементов вместо набора данных.
Несмотря на то, что экземпляр технически можно
использовать и в таком состоянии, вы должны
будете указывать, какой номер страницы запросил пользователь,
чтобы он мог просматривать данные:
setCurrentPageNumber($pageNumber);]]>
Наиболее простым способом отслеживания номера страницы является
использование URL. Мы рекомендуем использовать для этого
совместимый с Zend_Controller_Router_Interface
маршрутизатор, но это не обязательно.
Ниже приведен пример маршрута, который можно использовать в
конфигурационном файле INI:
Используя этот маршрут и компоненты MVC Zend Framework-а,
вы можете устанавливать номер текущей страницы следующим образом:
setCurrentPageNumber($this->_getParam('pageNumber'));]]>
Есть также другие опции, о них читайте в разделе
Конфигурация.
После этого нужно присвоить экземпляр
Zend_Paginator переменной вида. Если используется
Zend_View с помощником действий ViewRenderer, то
для этого подходит следующий код:
view->paginator = $paginator;]]>
Визуализация страниц через скрипты видов
Для визуализации элементов страницы (если
вы используете для этого Zend_Paginator)
и отображения постраничной навигации используется скрипт вида.
Поскольку Zend_Paginator реализует SPL-интерфейс
IteratorAggregate,
то обход элементов и их отображение производится просто.