Spec-Zone.ru › CakePHP 4.3

Класс Paginator

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

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

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

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

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

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

Возвращает

$this

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

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

Возвращает

array

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

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

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

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

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

Параметры

string $key

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

Возвращает

mixed

Исключения

InvalidArgumentException

getCount() protected

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

Получить общее количество записей.

Параметры

Cake\Datasource\QueryInterface $query

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

array $data

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

Возвращает

int|null

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

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

Возвращает

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

getSortableFields() protected

getSortableFields(array<string, mixed> $config): array<string>|null

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

Параметры

array<string, mixed> $config

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

Возвращает

array<string>|null

mergeOptions() 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\PageOutOfBoundsException

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

Spec-Zone.ru

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