Cakephp 2.x: как разбить данные на страницы из существующего массива (json и т. д.)?

Я использую удаленный API для получения данных (в формате xml, json), которые я кэширую. Но мне нужно правильно разбить эти данные на страницы перед рендерингом.

Я не хочу хранить эти данные в базе данных.

Я могу воссоздать компонент PHPPaginator и самостоятельно обрабатывать данные (Hash::sort, filtering и т.д.) как упомянуто здесь, но я хотел бы повторно использовать помощник по разбивке на страницы.

Я попытался понять, как компонент Paginator передает данные помощнику Paginator, но не смог найти, где он был создан и где были установлены данные.

Я видел настройки $this->Paginator->для классической модели:

array(
'page' => (int) 1,
'current' => (int) 100,
'count' => (int) 341,
'prevPage' => false,
'nextPage' => true,
'pageCount' => (int) 4,
'order' => 'Model.created DESC',
'limit' => (int) 100,
'options' => array(),
'paramType' => 'named'
)

Как мне создать экземпляр помощника Paginator, чтобы он автоматически создавал все ссылки точно так же, как это делается с обычными данными?


person mattspain    schedule 21.01.2015    source источник


Ответы (1)


Используйте источник данных массива из этого репозитория. Просто превратите свой json-файл в массив или создайте на его основе собственный источник данных Json.

https://github.com/cakephp/datasources

Пагинатор просто берет параметры URL и превращает их в поиск («все») и поиск («количество»). Помощник просто имеет дело с созданием некоторой ссылки в представлении с параметрами для компонента paginator. Настоящая разбивка на страницы происходит путем поиска всех и подсчета с использованием объекта модели.

person floriank    schedule 21.01.2015
comment
Спасибо, это именно то решение, которое я искал. - person mattspain; 21.01.2015