Класс SimplePaginator
Упрощенный пагинатор, который избегает потенциально дорогостоящих запросов для получения общего количества записей.
При использовании простого пагинатора вы не сможете сгенерировать номера страниц. Вместо этого используйте только элементы управления пагинацией «предыдущая/следующая» и обрабатывайте ошибки 404, когда пагинация выходит за рамки доступного набора результатов.
Краткое описание свойств
- $_config protected
arrayКонфигурация во время выполнения
- $_configInitialized protected
boolУказывает, была ли свойство config уже настроена по умолчанию
- $_defaultConfig protected
arrayНастройки пагинации по умолчанию.
- $_pagingParams protected
arrayПараметры пагинации после выполнения операции пагинации.
Краткое описание методов
-
_configDelete() protected
Удаляет единственный ключ конфигурации.
-
_configRead() protected
Читает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_extractFinder() protected
Извлекает имя и параметры поиска из предоставленных параметров пагинации.
-
_prefix() protected
Добавляет префикс к полю, если это возможно.
-
_removeAliases() protected
Удаляет псевдоним, если необходимо.
-
addPageCountParams() protected
Добавляет параметры «страница» и «количество страниц».
-
addPrevNextParams() protected
Добавляет параметры «предыдущая страница» и «следующая страница».
-
addSortingParams() protected
Добавляет параметры сортировки/упорядочивания.
-
addStartEndParams() protected
Добавляет параметры «начало» и «конец».
-
buildParams() protected
Строит параметры пагинации.
-
checkLimit() public
Проверяет параметр limit и гарантирует, что он находится в пределах границ maxLimit.
-
configShallow() public
Объединяет предоставленную конфигурацию с существующей. В отличие от
config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
extractData() protected
Извлекает необходимые данные пагинации
-
getAllowedParameters() protected
Метод-заглушка для чтения устаревших параметров whitelist или allowedParameters
-
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для конкретного ключа.
-
getCount() protected
Простой пагинатор не выполняет запросы подсчёта, поэтому этот метод возвращает
null. -
getDefaults() public
Получает настройки для $model. Если для конкретного хранилища нет настроек, будут использоваться общие настройки.
-
getPagingParams() public
Получает параметры пагинации после выполнения операции пагинации.
-
getQuery() protected
Получает запрос для извлечения результатов пагинации.
-
getSortableFields() protected
Метод-заглушка для чтения устаревших параметров sortWhitelist или sortableFields.
-
mergeOptions() public
Объединяет различные параметры, используемые Paginator. Сборка настроек из следующих мест:
-
paginate() public
Обрабатывает автоматическую пагинацию записей модели.
-
setConfig() public
Устанавливает конфигурацию.
-
validateSort() public
Проверяет, можно ли выполнить желаемую сортировку для $object.
Подробное описание методов
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Параметры
-
string$key Ключ для удаления.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписать существующую конфигурацию
_configRead() protected
_configRead(string|null $key): mixed
Читает ключ конфигурации.
Параметры
-
string|null$key Ключ для чтения.
Возвращает
mixed_configWrite() protected
_configWrite(string|array $key, mixed $value, bool|string $merge = false): void
Записывает ключ конфигурации.
Параметры
-
string|array$key Ключ для записи.
-
mixed$value Значение для записи.
-
bool|string$merge optional True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписать существующую конфигурацию
_extractFinder() protected
_extractFinder(array $options): array
Извлекает имя findera и параметры из предоставленных параметров пагинации.
Параметры
-
array$options параметры пагинации.
Возвращает
array_prefix() protected
_prefix(Cake\Datasource\RepositoryInterface $object, array $order, bool $allowed = false): array
Добавляет префикс к полю с псевдонимом таблицы, если это возможно.
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array$order Массив order.
-
bool$allowed optional Разрешено ли поле.
Возвращает
array_removeAliases() protected
_removeAliases(array $fields, string $model): array
Удаляет псевдоним, если необходимо.
Параметры
-
array$fields Текущие поля
-
string$model Текущий псевдоним модели
Возвращает
arrayaddPageCountParams() protected
addPageCountParams(array $params, array $data): array
Добавляет параметры "page" и "pageCount".
Параметры
-
array$params Параметры постраничной навигации.
-
array$data Данные пагинатора.
Возвращает
arrayaddPrevNextParams() protected
addPrevNextParams(array $params, array $data): array
Добавляет параметры "prevPage" и "nextPage".
Параметры
-
array$params Параметры пагинатора.
-
array$data Данные постраничной навигации.
Возвращает
arrayaddSortingParams() protected
addSortingParams(array $params, array $data): array
Добавляет параметры сортировки.
Параметры
-
array$params Параметры пагинатора.
-
array$data Данные постраничной навигации.
Возвращает
arrayaddStartEndParams() protected
addStartEndParams(array $params, array $data): array
Добавляет параметры "start" и "end".
Параметры
-
array$params Параметры постраничной навигации.
-
array$data Данные пагинатора.
Возвращает
arraybuildParams() protected
buildParams(array $data): array
Создает параметры пагинации.
Параметры
-
array$data Данные пагинатора, содержащие ключи 'options', 'count', 'defaults', 'finder', 'numResults'.
Возвращает
arraycheckLimit() public
checkLimit(array $options): array
Проверяет параметр limit и убеждается, что он находится в пределах maxLimit.
Параметры
-
array$options Массив параметров с ключом limit для проверки.
Возвращает
arrayconfigShallow() public
configShallow(string|array $key, mixed|null $value = null): $this
Сливает предоставленную конфигурацию с существующей. В отличие от config(), который выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
Возвращает
$thisextractData() protected
extractData(Cake\Datasource\RepositoryInterface $object, array $params, array $settings): array
Извлечь необходимые данные пагинации
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array$params Параметры запроса
-
array$settings Настройки/конфигурация, используемая для пагинации.
Возвращает
arraygetAllowedParameters() protected
getAllowedParameters(): string[]
Вспомогательный метод для чтения устаревшего белого списка или параметров allowedParameters
Возвращает
string[]getConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение конкретного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key optional Ключ для получения или null для всей конфигурации.
-
mixed$default optional Возвращаемое значение, когда ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для этого конкретного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedИсключения
InvalidArgumentExceptiongetCount() protected
getCount(Cake\Datasource\QueryInterface $query, array $data): int|null
Простая пагинация не выполняет никаких запросов подсчета, поэтому этот метод возвращает null.
Параметры
-
Cake\Datasource\QueryInterface$query Экземпляр запроса.
-
array$data Данные пагинации.
Возвращает
int|nullgetDefaults() public
getDefaults(string $alias, array $settings): array
Получить настройки для $model. Если для конкретного репозитория нет настроек, будут использованы общие настройки.
Параметры
-
string$alias Имя модели для получения настроек.
-
array$settings Настройки, используемые для объединения.
Возвращает
arraygetPagingParams() public
getPagingParams(): array
Получить параметры постраничной навигации после операции постраничного вывода.
Возвращает
arraygetQuery() protected
getQuery(Cake\Datasource\RepositoryInterface $object, Cake\Datasource\QueryInterface|null $query = null, array $data): Cake\Datasource\QueryInterface
Получить запрос для получения постраничных результатов.
Параметры
-
Cake\Datasource\RepositoryInterface$object Экземпляр репозитория.
-
Cake\Datasource\QueryInterface|null$query optional Экземпляр запроса.
-
array$data Данные для постраничной навигации.
Возвращает
Cake\Datasource\QueryInterfacegetSortableFields() protected
getSortableFields(array $config): string[]|null
Метод-обёртка для чтения устаревших параметров sortWhitelist или sortableFields.
Параметры
-
array$config Данные конфигурации для слияния и вывода предупреждений.
Возвращает
string[]|nullmergeOptions() public
mergeOptions(array $params, array $settings): array
Объединяет различные параметры, используемые Paginator. Сборка настроек из следующих источников:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — агрегация всех объединённых наборов опций. Вы можете изменить значение конфигурации allowedParameters, чтобы изменить, какие параметры/значения могут быть установлены с помощью параметров запроса.
Параметры
-
array$params Параметры запроса.
-
array$settings Настройки для слияния с данными запроса.
Возвращает
arraypaginate() public
paginate(Cake\Datasource\RepositoryInterfaceCake\Datasource\QueryInterface $object, array $params = [], array $settings = []): Cake\Datasource\ResultSetInterface
Обрабатывает автоматическую постраничную навигацию записей модели.
Настройка постраничной навигации
При вызове paginate() вы можете использовать параметр $settings для передачи настроек постраничной навигации. Эти настройки используются для построения запросов и управления другими настройками постраничной навигации.
Если ваши настройки содержат ключ с алиасом текущей таблицы, данные внутри этого ключа будут использоваться. В противном случае будет использована конфигурация верхнего уровня.
$settings = [ 'limit' => 20, 'maxLimit' => 100 ]; $results = $paginator->paginate($table, $settings);
Вышеуказанные настройки будут использоваться для постраничной навигации любого репозитория. Вы можете настроить настройки, специфичные для репозитория, задав настройки с ключом, соответствующим алиасу репозитория.
$settings = [
'Articles' => [
'limit' => 20,
'maxLimit' => 100
],
'Comments' => [ ... ]
];
$results = $paginator->paginate($table, $settings); Это позволит вам иметь разные настройки постраничной навигации для репозиториев Articles и Comments.
Управление полями сортировки
По умолчанию CakePHP автоматически позволяет сортировать по любому столбцу объекта репозитория, подлежащего постраничной навигации. Часто вы захотите разрешить сортировку по связанным столбцам или вычисляемым полям. В этих случаях вам потребуется определить разрешённый список всех столбцов, по которым вы хотите разрешить сортировку. Вы можете определить разрешённые поля сортировки в параметре $settings:
$settings = [
'Articles' => [
'finder' => 'custom',
'sortableFields' => ['title', 'author_id', 'comment_count'],
]
]; Передача пустого массива как sortableFields запрещает сортировку в целом.
Постраничная навигация с помощью пользовательских находок
Вы можете выполнить постраничную навигацию с любым типом поиска, определённым для вашей таблицы, используя параметр finder.
$settings = [
'Articles' => [
'finder' => 'popular'
]
];
$results = $paginator->paginate($table, $settings); Выполнит постраничную навигацию, используя метод find('popular').
Вы также можете передать уже созданный экземпляр запроса в этот метод:
$query = $this->Articles->find('popular')->matching('Tags', function ($q) {
return $q->where(['name' => 'CakePHP'])
});
$results = $paginator->paginate($query); Ограничение параметров запроса
Используя параметры запроса-области, вы можете выполнить постраничную навигацию по нескольким запросам в одном действии контроллера:
$articles = $paginator->paginate($articlesQuery, ['scope' => 'articles']); $tags = $paginator->paginate($tagsQuery, ['scope' => 'tags']);
Каждый из вышеперечисленных запросов будет использовать разные наборы параметров строки запроса для данных постраничной навигации. Пример URL, выполняющий постраничную навигацию по обоим результатам:
/dashboard?articles[page]=1&tags[page]=2
Параметры
-
Cake\Datasource\RepositoryInterfaceCake\Datasource\QueryInterface$object Репозиторий или запрос для постраничной навигации.
-
array$params optional Параметры запроса
-
array$settings optional Настройки/конфигурация, используемые для постраничной навигации.
Возвращает
Cake\Datasource\ResultSetInterfaceИсключение
Cake\Datasource\Exception\PageOutOfBoundsExceptionsetConfig() public
setConfig(string|array $key, mixed|null $value = null, bool $merge = true): $this
Устанавливает конфигурацию.
Использование
Установка определённого значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или массив всех конфигураций.
-
mixed|null$value optional Значение для установки.
-
bool$merge optional Нужно ли рекурсивно сливать или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
$thisИсключение
Cake\Core\Exception\CakeExceptionПри попытке установить недопустимый ключ.
validateSort() public
validateSort(Cake\Datasource\RepositoryInterface $object, array $options): array
Проверка, что указанная сортировка может быть применена к $object.
Допускается сортировка только по полям или виртуальным полям. Параметр направления также будет очищен. Наконец, ключи sort + direction будут преобразованы в удобный для модели ключ order.
Вы можете использовать параметр allowedParameters, чтобы управлять тем, какие столбцы/поля доступны для сортировки через параметры URL. Это помогает предотвратить упорядочение больших наборов результатов по значениям без индексов.
Если вам нужно сортировать по связанным столбцам или синтетическим свойствам, вам нужно использовать параметр sortableFields.
Любые столбцы, перечисленные в разрешённых полях сортировки, будут неявно доверенными. Это позволяет сортировать по синтетическим столбцам или столбцам, добавленным в пользовательских операциях поиска, которые могут отсутствовать в схеме.
Установленные по умолчанию параметры сортировки, предоставленные paginate(), будут объединены с запрошенными пользователем полем/направлением сортировки.
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array$options Параметры постраничной навигации, используемые для данного запроса.
Возвращает
arrayПодробное описание свойств
$_config protected
Конфигурация во время выполнения
Тип
array$_configInitialized protected
Была ли конфигурация свойств уже настроена по умолчанию
Тип
bool$_defaultConfig protected
Настройки постраничной навигации по умолчанию.
При вызове paginate() эти настройки будут объединены с вашей конфигурацией.
-
maxLimit- Максимальный лимит, который могут выбрать пользователи для просмотра. По умолчанию 100 -
limit- Начальное количество элементов на странице. По умолчанию 20. -
page- Номер стартовой страницы, по умолчанию 1. -
allowedParameters- Список параметров, которые пользователи могут задать с помощью параметров запроса. Изменение этого списка позволит пользователям иметь больше влияния на постраничную навигацию, будьте осторожны с тем, что вы разрешаете.
Тип
array$_pagingParams protected
Параметры постраничной навигации после выполнения операции постраничного вывода.
Тип
array
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.2/class-Cake.Datasource.SimplePaginator.html