Класс SimplePaginator
Упрощённый пагинатор, который избегает потенциально затратных запросов для получения общего количества записей.
При использовании простого пагинатора вы не сможете генерировать номера страниц. Вместо этого используйте только элементы навигации «предыдущая/следующая» и обрабатывайте ошибки 404, когда пагинация выходит за пределы доступного набора результатов.
Краткое описание свойств
- $_config protected
array<string, mixed>Конфигурация во время выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена со значениями по умолчанию
- $_defaultConfig protected
array<string, mixed>Настройки пагинации по умолчанию.
- $_pagingParams protected
array<string, 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
Проверяет параметр ограничения и гарантирует, что он находится в пределах границ 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
Объединяет различные параметры, используемые пагинатором. Собирает настройки из следующих источников:
-
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
Извлекает имя и параметры поиска из предоставленных параметров пагинации.
Параметры
-
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
Простой пагинатор не выполняет запрос подсчёта, поэтому этот метод возвращает 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<string, array>
Получить параметры постраничной навигации после операции постраничного вывода.
Возвращает
array<string, array>getQuery() 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. Собирает настройки из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — совокупность всех объединенных наборов параметров. Вы можете изменить значение config 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\Paging\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 преобразуются в модель-ориентированный ключ order.
Вы можете использовать параметр allowedParameters, чтобы контролировать, какие столбцы/поля доступны для сортировки через параметры URL. Это помогает предотвратить упорядочение больших наборов результатов по неиндексированным значениям.
Если вам нужно отсортировать по связанным столбцам или синтетическим свойствам, вам необходимо использовать параметр sortableFields.
Любые столбцы, указанные в разрешенных полях сортировки, будут неявно считаться надежными. Это позволяет сортировать по синтетическим столбцам или столбцам, добавленным в пользовательских операциях поиска, которые могут не существовать в схеме.
По умолчанию параметры порядка, предоставленные paginate(), будут объединены с запрошенным пользователем полем/направлением сортировки.
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array<string, mixed>$options Параметры постраничной навигации, используемые для этого запроса.
Возвращает
array<string, mixed>Детали свойств
$_config protected
Конфигурация выполнения
Тип
array<string, mixed>$_configInitialized protected
Установлена ли конфигурация свойств значениями по умолчанию
Тип
bool$_defaultConfig protected
Настройки постраничной навигации по умолчанию.
При вызове paginate() эти настройки будут объединены с вашей конфигурацией.
-
maxLimit- Максимальное количество элементов, которое пользователи могут выбрать для просмотра. По умолчанию 100 -
limit- Начальное количество элементов на странице. По умолчанию 20. -
page- Начальная страница, по умолчанию 1. -
allowedParameters- Список параметров, которые пользователи могут задать с помощью параметров запроса. Изменение этого списка позволит пользователям более активно влиять на постраничную навигацию, будьте осторожны, что разрешаете.
Тип
array<string, mixed>$_pagingParams protected
Параметры постраничной навигации после выполнения операции постраничного вывода.
Тип
array<string, 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.4/class-Cake.Datasource.Paging.SimplePaginator.html