Spec-Zone.ru › CakePHP 4.2

Класс SimplePaginator

Упрощенный пагинатор, который избегает потенциально дорогостоящих запросов для получения общего количества записей.

При использовании простого пагинатора вы не сможете сгенерировать номера страниц. Вместо этого используйте только элементы управления пагинацией «предыдущая/следующая» и обрабатывайте ошибки 404, когда пагинация выходит за рамки доступного набора результатов.

Пространство имён: Cake\Datasource

Краткое описание свойств

  • $_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.

END_OF_DOCUMENT_MARKER

Подробное описание методов

_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

Текущий псевдоним модели

Возвращает

array

addPageCountParams() protected

addPageCountParams(array $params, array $data): array

Добавляет параметры "page" и "pageCount".

Параметры

array $params

Параметры постраничной навигации.

array $data

Данные пагинатора.

Возвращает

array

addPrevNextParams() protected

addPrevNextParams(array $params, array $data): array

Добавляет параметры "prevPage" и "nextPage".

Параметры

array $params

Параметры пагинатора.

array $data

Данные постраничной навигации.

Возвращает

array

addSortingParams() protected

addSortingParams(array $params, array $data): array

Добавляет параметры сортировки.

Параметры

array $params

Параметры пагинатора.

array $data

Данные постраничной навигации.

Возвращает

array

addStartEndParams() protected

addStartEndParams(array $params, array $data): array

Добавляет параметры "start" и "end".

Параметры

array $params

Параметры постраничной навигации.

array $data

Данные пагинатора.

Возвращает

array

buildParams() protected

buildParams(array $data): array

Создает параметры пагинации.

Параметры

array $data

Данные пагинатора, содержащие ключи 'options', 'count', 'defaults', 'finder', 'numResults'.

Возвращает

array

checkLimit() public

checkLimit(array $options): array

Проверяет параметр limit и убеждается, что он находится в пределах maxLimit.

Параметры

array $options

Массив параметров с ключом limit для проверки.

Возвращает

array

configShallow() 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

Значение для установки.

Возвращает

$this

extractData() protected

extractData(Cake\Datasource\RepositoryInterface $object, array $params, array $settings): array

Извлечь необходимые данные пагинации

Параметры

Cake\Datasource\RepositoryInterface $object

Объект репозитория.

array $params

Параметры запроса

array $settings

Настройки/конфигурация, используемая для пагинации.

Возвращает

array

getAllowedParameters() 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

Возвращаемое значение, когда ключ не существует.

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

Возвращает конфигурацию для этого конкретного ключа.

Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.

Параметры

string $key

Ключ для получения.

Возвращает

mixed

Исключения

InvalidArgumentException

getCount() protected

getCount(Cake\Datasource\QueryInterface $query, array $data): int|null

Простая пагинация не выполняет никаких запросов подсчета, поэтому этот метод возвращает null.

Параметры

Cake\Datasource\QueryInterface $query

Экземпляр запроса.

array $data

Данные пагинации.

Возвращает

int|null

getDefaults() public

getDefaults(string $alias, array $settings): array

Получить настройки для $model. Если для конкретного репозитория нет настроек, будут использованы общие настройки.

Параметры

string $alias

Имя модели для получения настроек.

array $settings

Настройки, используемые для объединения.

Возвращает

array

getPagingParams() public

getPagingParams(): array

Получить параметры постраничной навигации после операции постраничного вывода.

Возвращает

array

getQuery() 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\QueryInterface

getSortableFields() protected

getSortableFields(array $config): string[]|null

Метод-обёртка для чтения устаревших параметров sortWhitelist или sortableFields.

Параметры

array $config

Данные конфигурации для слияния и вывода предупреждений.

Возвращает

string[]|null

mergeOptions() public

mergeOptions(array $params, array $settings): array

Объединяет различные параметры, используемые Paginator. Сборка настроек из следующих источников:

  • Общие настройки постраничной навигации
  • Настройки, специфичные для модели.
  • Параметры запроса

Результат этого метода — агрегация всех объединённых наборов опций. Вы можете изменить значение конфигурации allowedParameters, чтобы изменить, какие параметры/значения могут быть установлены с помощью параметров запроса.

Параметры

array $params

Параметры запроса.

array $settings

Настройки для слияния с данными запроса.

Возвращает

array

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\PageOutOfBoundsException

setConfig() 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API