Класс Paginator
Этот класс используется для обработки автоматической постраничной навигации данных модели.
Краткое описание свойств
- $_config protected
array<string, mixed>Конфигурация выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена по умолчанию
- $_defaultConfig protected
array<string, mixed>Настройки постраничной навигации по умолчанию.
- $_pagingParams protected
arrayПараметры постраничной навигации после выполнения операции.
Краткое описание методов
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Читает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_extractFinder() protected
Извлекает имя и параметры поиска из предоставленных опций постраничной навигации.
-
_prefix() protected
Добавляет префикс к полю, если это возможно.
-
_removeAliases() protected
Удаляет псевдонимы при необходимости.
-
addPageCountParams() protected
Добавляет параметры "page" и "pageCount".
-
addPrevNextParams() protected
Добавляет параметры "prevPage" и "nextPage".
-
addSortingParams() protected
Добавляет параметры сортировки/упорядочивания.
-
addStartEndParams() protected
Добавляет параметры "start" и "end".
-
buildParams() protected
Создаёт параметры постраничной навигации.
-
checkLimit() public
Проверяет параметр ограничения и гарантирует, что он находится в пределах допустимых значений maxLimit.
-
configShallow() public
Объединяет предоставленную конфигурацию с существующей. В отличие от
config(), которое выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
extractData() protected
Извлекает данные, необходимые для постраничной навигации.
-
getAllowedParameters() protected
Метод-обёртка для чтения устаревшего параметра whitelist или allowedParameters.
-
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для данного ключа.
-
getCount() protected
Получает общее количество записей.
-
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(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает ключ конфигурации.
Параметры
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$merge optional True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписать существующую конфигурацию
_extractFinder() protected
_extractFinder(array<string, mixed> $options): array
Извлекает имя findera и параметры из предоставленных параметров пагинации.
Параметры
-
array<string, mixed>$options Параметры пагинации.
Возвращает
array_prefix() protected
_prefix(Cake\Datasource\RepositoryInterface $object, array $order, bool $allowed = false): array
Добавляет префикс к полю с псевдонимом таблицы, если это возможно.
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array$order Массив сортировки.
-
bool$allowed optional Разрешено ли поле.
Возвращает
array_removeAliases() protected
_removeAliases(array<string, mixed> $fields, string $model): array<string, mixed>
Удаляет псевдоним, если необходимо.
Параметры
-
array<string, mixed>$fields Текущие поля
-
string$model Текущий псевдоним модели
Возвращает
array<string, mixed>addPageCountParams() protected
addPageCountParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры "page" и "pageCount".
Параметры
-
array<string, mixed>$params Параметры пагинации.
-
array$data Данные пагинатора.
Возвращает
array<string, mixed>addPrevNextParams() protected
addPrevNextParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры "prevPage" и "nextPage".
Параметры
-
array<string, mixed>$params Параметры пагинатора.
-
array$data Данные пагинации.
Возвращает
array<string, mixed>addSortingParams() protected
addSortingParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры сортировки.
Параметры
-
array<string, mixed>$params Параметры пагинатора.
-
array$data Данные пагинации.
Возвращает
array<string, mixed>addStartEndParams() protected
addStartEndParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры "start" и "end".
Параметры
-
array<string, mixed>$params Параметры пагинации.
-
array$data Данные пагинатора.
Возвращает
array<string, mixed>buildParams() protected
buildParams(array<string, mixed> $data): array<string, mixed>
Создает параметры пагинации.
Параметры
-
array<string, mixed>$data Данные пагинатора, содержащие ключи 'options', 'count', 'defaults', 'finder', 'numResults'.
Возвращает
array<string, mixed>checkLimit() public
checkLimit(array<string, mixed> $options): array<string, mixed>
Проверяет параметр limit и убеждается, что он находится в пределах maxLimit.
Параметры
-
array<string, mixed>$options Массив параметров с ключом limit для проверки.
Возвращает
array<string, mixed>configShallow() public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
Сливает предоставленную конфигурацию с существующей. В отличие от config() который выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
Возвращает
$thisextractData() protected
extractData(Cake\Datasource\RepositoryInterface $object, array<string, mixed> $params, array<string, mixed> $settings): array
Извлекает необходимые данные пагинации
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array<string, mixed>$params Параметры запроса
-
array<string, mixed>$settings Настройки/конфигурация, используемые для пагинации.
Возвращает
arraygetAllowedParameters() protected
getAllowedParameters(): array<string>
Вспомогательный метод для чтения устаревшего параметра whitelist или allowedParameters
Возвращает
array<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
Получить общее количество записей.
Параметры
-
Cake\Datasource\QueryInterface$query Экземпляр запроса.
-
array$data Данные пагинации.
Возвращает
int|nullgetDefaults() public
getDefaults(string $alias, array<string, mixed> $settings): array<string, mixed>
Получить настройки для $model. Если для конкретного репозитория нет настроек, будут использованы общие настройки.
Параметры
-
string$alias Имя модели для получения настроек.
-
array<string, mixed>$settings Настройки, используемые для объединения.
Возвращает
array<string, mixed>getPagingParams() public
getPagingParams(): array
Получить параметры постраничной навигации после операции постраничной обработки.
Возвращает
arraygetQuery() protected
getQuery(Cake\Datasource\RepositoryInterface $object, Cake\Datasource\QueryInterface|null $query, array<string, mixed> $data): Cake\Datasource\QueryInterface
Получить запрос для извлечения постраничных результатов.
Параметры
-
Cake\Datasource\RepositoryInterface$object Экземпляр репозитория.
-
Cake\Datasource\QueryInterface|null$query Экземпляр запроса.
-
array<string, mixed>$data Данные постраничной навигации.
Возвращает
Cake\Datasource\QueryInterfacegetSortableFields() protected
getSortableFields(array<string, mixed> $config): array<string>|null
Метод-обёртка для чтения устаревшего параметра sortWhitelist или sortableFields.
Параметры
-
array<string, mixed>$config Данные конфигурации для объединения и вывода предупреждений.
Возвращает
array<string>|nullmergeOptions() public
mergeOptions(array<string, mixed> $params, array $settings): array<string, mixed>
Объединяет различные параметры, используемые Paginator. Объединяет настройки из следующих источников:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — агрегированный набор всех объединённых наборов параметров. Вы можете изменить значение allowedParameters для изменения параметров/значений, которые могут быть установлены с помощью параметров запроса.
Параметры
-
array<string, mixed>$params Параметры запроса.
-
array$settings Настройки для объединения с данными запроса.
Возвращает
array<string, mixed>paginate() 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(array<string, mixed>|string $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']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
-
bool$merge optional Флаг рекурсивного слияния или перезаписи существующей конфигурации, по умолчанию true.
Возвращает
$thisИсключения
Cake\Core\Exception\CakeExceptionПри попытке установить недопустимый ключ.
validateSort() public
validateSort(Cake\Datasource\RepositoryInterface $object, array<string, mixed> $options): array<string, mixed>
Проверка возможности выполнения желаемой сортировки по $object.
Можно сортировать только по полям или виртуальным полям. Параметр direction также будет проверен. Наконец, ключи sort + direction будут преобразованы в модель-дружественный ключ порядка.
Вы можете использовать опцию allowedParameters для управления доступными пользователям колонками/полями для сортировки через URL-параметры. Это помогает предотвратить сортировку больших наборов результатов по неиндексированным значениям.
Если вам нужно сортировать по связанным колоннам или синтетическим свойствам, вам нужно использовать опцию sortableFields.
Любые столбцы, перечисленные в разрешённых полях сортировки, будут неявно доверены. Вы можете использовать это для сортировки по синтетическим столбцам или столбцам, добавленным в пользовательские операции поиска, которые могут отсутствовать в схеме.
Настройки порядка по умолчанию, предоставленные paginate(), будут объединены с запрошенным пользователем полем сортировки/направлением.
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array<string, mixed>$options Настройки постраничной навигации, используемые для этого запроса.
Возвращает
array<string, mixed>Подробное описание свойств
$_config protected
Конфигурация runtime
Тип
array<string, mixed>$_configInitialized protected
Флаг, указывающий, была ли конфигурация уже настроена по умолчанию
Тип
bool$_defaultConfig protected
Настройки постраничной навигации по умолчанию.
При вызове paginate() эти настройки будут объединены с вашей конфигурацией.
-
maxLimit— Максимальное число элементов, которое пользователь может выбрать для просмотра. По умолчанию 100 -
limit— Начальное число элементов на странице. По умолчанию 20. -
page— Номер начальной страницы, по умолчанию 1. -
allowedParameters— Список параметров, которые пользователи могут установить с помощью параметров запроса. Изменение этого списка позволит пользователям иметь больше влияния на постраничную навигацию, будьте осторожны с тем, что вы разрешаете.
Тип
array<string, mixed>$_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.3/class-Cake.Datasource.Paginator.html