Spec-Zone.ru › CakePHP 4.4

Класс SimplePaginator

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

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

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

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

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

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

Извлекает имя и параметры поиска из предоставленных параметров пагинации.

Параметры

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

Простой пагинатор не выполняет запрос подсчёта, поэтому этот метод возвращает 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<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\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. Собирает настройки из следующих мест:

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

Результат этого метода — совокупность всех объединенных наборов параметров. Вы можете изменить значение 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\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 преобразуются в модель-ориентированный ключ 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

Spec-Zone.ru

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