Класс NumericPaginator
Этот класс используется для обработки автоматической постраничной навигации данных модели.
Краткое описание свойств
- $_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
Добавляет параметры "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
Удаляет один ключ конфигурации.
Parameters
-
string$key Ключ для удаления.
Returns
voidThrows
Cake\Core\Exception\CakeExceptionif attempting to clobber existing config
_configRead() protected
_configRead(string|null $key): mixed
Читает ключ конфигурации.
Parameters
-
string|null$key Ключ для чтения.
Returns
mixed_configWrite() protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает ключ конфигурации.
Parameters
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$merge optional True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Returns
voidThrows
Cake\Core\Exception\CakeExceptionif attempting to clobber existing config
_extractFinder() protected
_extractFinder(array<string, mixed> $options): array
Извлекает имя средства поиска и параметры из предоставленных параметров постраничной навигации.
Parameters
-
array<string, mixed>$options Параметры постраничной навигации.
Returns
array_prefix() protected
_prefix(Cake\Datasource\RepositoryInterface $object, array $order, bool $allowed = false): array
Добавляет префикс к полю с псевдонимом таблицы, если это возможно.
Parameters
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array$order Массив порядка.
-
bool$allowed optional Разрешено ли поле.
Returns
array_removeAliases() protected
_removeAliases(array<string, mixed> $fields, string $model): array<string, mixed>
Удаляет псевдоним, если необходимо.
Parameters
-
array<string, mixed>$fields Текущие поля
-
string$model Текущий псевдоним модели
Returns
array<string, mixed>addPageCountParams() protected
addPageCountParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры "page" и "pageCount".
Parameters
-
array<string, mixed>$params Параметры постраничной навигации.
-
array$data Данные постраничной навигации.
Returns
array<string, mixed>addPrevNextParams() protected
addPrevNextParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры "prevPage" и "nextPage".
Parameters
-
array<string, mixed>$params Параметры постраничной навигации.
-
array$data Данные постраничной навигации.
Returns
array<string, mixed>addSortingParams() protected
addSortingParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры сортировки / упорядочивания.
Parameters
-
array<string, mixed>$params Параметры постраничной навигации.
-
array$data Данные постраничной навигации.
Returns
array<string, mixed>addStartEndParams() protected
addStartEndParams(array<string, mixed> $params, array $data): array<string, mixed>
Добавляет параметры "start" и "end".
Parameters
-
array<string, mixed>$params Параметры постраничной навигации.
-
array$data Данные постраничной навигации.
Returns
array<string, mixed>buildParams() protected
buildParams(array<string, mixed> $data): array<string, mixed>
Создает параметры постраничной навигации.
Parameters
-
array<string, mixed>$data Данные постраничной навигации, содержащие ключи 'options', 'count', 'defaults', 'finder', 'numResults'.
Returns
array<string, mixed>checkLimit() public
checkLimit(array<string, mixed> $options): array<string, mixed>
Проверяет параметр limit и убеждается, что он находится в пределах maxLimit.
Parameters
-
array<string, mixed>$options Массив параметров с ключом limit для проверки.
Returns
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']);
Parameters
-
array<string, mixed>|string$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
Returns
$thisextractData() protected
extractData(Cake\Datasource\RepositoryInterface $object, array<string, mixed> $params, array<string, mixed> $settings): array
Извлекает необходимые данные постраничной навигации
Parameters
-
Cake\Datasource\RepositoryInterface$object Объект репозитория.
-
array<string, mixed>$params Параметры запроса
-
array<string, mixed>$settings Настройки / конфигурация, используемые для постраничной навигации.
Returns
arraygetAllowedParameters() protected
getAllowedParameters(): array<string>
Вспомогательный метод для чтения устаревшего белого списка или параметров allowedParameters
Returns
array<string>getConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Usage
Чтение всей конфигурации:
$this->getConfig();
Чтение конкретного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Parameters
-
string|null$key optional Ключ для получения или null для всей конфигурации.
-
mixed$default optional Возвращаемое значение, когда ключ не существует.
Returns
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для этого конкретного ключа.
Значение конфигурации для этого ключа должно существовать, оно не может быть null.
Parameters
-
string$key Ключ для получения.
Returns
mixedThrows
InvalidArgumentExceptiongetCount() protected
getCount(Cake\Datasource\QueryInterface $query, array $data): int|null
Получает общее количество записей.
Parameters
-
Cake\Datasource\QueryInterface$query Экземпляр запроса.
-
array$data Данные постраничной навигации.
Returns
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. Объединяет настройки из следующих источников:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — агрегированный набор всех объединённых наборов опций. Вы можете изменить значение 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 запрещает сортировку полностью.
Постраничная навигация с настраиваемыми find-методами
Вы можете выполнить постраничную навигацию с любым типом find, определённым для вашей таблицы, используя опцию 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.
Любые столбцы, перечисленные в разрешённых полях сортировки, будут неявно доверены. Вы можете использовать это для сортировки по синтетическим столбцам или столбцам, добавленным в пользовательских операциях find, которые могут не существовать в схеме.
Опции порядка по умолчанию, предоставленные paginate(), будут объединены с запрошенным полем/направлением сортировки пользователя.
Параметры
-
Cake\Datasource\RepositoryInterface$object Объект хранилища.
-
array<string, mixed>$options Параметры постраничной навигации, используемые для этого запроса.
Возвращает
array<string, mixed>Подробное описание свойств
$_config protected
Конфигурация выполнения
Тип
array<string, mixed>$_configInitialized protected
Была ли свойство config уже настроена со значениями по умолчанию?
Тип
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.NumericPaginator.html