Класс PaginatorComponent
Этот компонент используется для обработки автоматической постраничной навигации данных модели. Основной способ использования этого компонента — вызов метода paginate(). Также есть удобная обертка в контроллере.
Настройка постраничной навигации
Вы настраиваете постраничную навигацию при вызове paginate(). Смотрите подробности в этом методе.
Устарело: 4.4.0 Используйте Cake\Datasource\Paging\Paginator напрямую.
Ссылка: https://book.cakephp.org/4/ru/controllers/components/pagination.html
Краткое описание свойств
- $_componentMap protected
array<string, array>Таблица поиска компонентов, используемая для ленивой загрузки объектов компонентов.
- $_config protected
array<string, mixed>Конфигурация во время выполнения
- $_configInitialized protected
boolУказатель, был ли свойство config уже настроено со значениями по умолчанию
- $_defaultConfig protected
array<string, mixed>Конфигурация по умолчанию
- $_paginator protected
Cake\Datasource\Paging\NumericPaginatorЭкземпляр постраничной навигации источника данных.
- $_registry protected
Cake\Controller\ComponentRegistryКласс реестра компонентов, используемый для ленивой загрузки компонентов.
- $components protected
arrayДругие компоненты, используемые этим компонентом.
Краткое описание методов
-
__call() public
Делегирование вызовов методов к Paginator.
-
__construct() public
Конструктор
-
__debugInfo() public
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
-
__get() public
Магический метод для ленивой загрузки $components.
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Считывает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_setPagingParams() protected
Установка параметров постраничной навигации для экземпляра запроса.
-
configShallow() public
Делегирование настройки параметров конфигурации в Paginator.
-
getConfig() public
Делегирование получения параметров конфигурации в Paginator.
-
getConfigOrFail() public
Возвращает конфигурацию для данного ключа.
-
getController() public
Получение контроллера, к которому привязан этот компонент.
-
getPaginator() public
Получение экземпляра постраничной навигации.
-
implementedEvents() public
Поддерживаемые этим компонентом события.
-
initialize() public
Метод обработчика конструктора.
-
log() public
Удобный метод для записи сообщения в журнал. Подробнее о записи в журналы см. Log::write().
-
mergeOptions() public
Объединяет различные параметры, используемые постраничной навигацией. Собирает настройки из следующих источников:
-
paginate() public
Обработка автоматической постраничной навигации записей модели.
-
setConfig() public
Делегирование настройки параметров конфигурации в Paginator.
-
setPaginator() public
Установка экземпляра постраничной навигации.
Подробное описание методов
__call() public
__call(string $method, array $args): mixed
Обработка вызовов методов к Paginator.
Параметры
-
string$method Имя метода.
-
array$args Аргументы метода.
Возвращает
mixed__construct() public
__construct(Cake\Controller\ComponentRegistry $registry, array<string, mixed> $config = [])
Конструктор
Параметры
-
Cake\Controller\ComponentRegistry$registry -
array<string, mixed>$config необязательно
__debugInfo() public
__debugInfo(): array<string, mixed>
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
array<string, mixed>__get() public
__get(string $name): Cake\Controller\Component|null
Магический метод для леничной загрузки $components.
Параметры
-
string$name Имя компонента для получения.
Возвращает
Cake\Controller\Component|null_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 необязательно True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionесли происходит попытка перезаписи существующей конфигурации
_setPagingParams() protected
_setPagingParams(): void
Устанавливает параметры постраничности для экземпляра запроса.
Возвращает
voidconfigShallow() public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
Продвинутая настройка параметров конфигурации.
Установка определённого значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или полный массив настроек.
-
mixed|null$value необязательно Значение для установки.
Возвращает
$thisgetConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Получение параметров конфигурации от Paginator.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определённого значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key необязательно Ключ для получения или null для всей конфигурации.
-
mixed$default необязательно Возвращаемое значение, если ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает значение конфигурации для указанного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedИсключения
InvalidArgumentExceptiongetController() public
getController(): Cake\Controller\Controller
Получает контроллер, к которому привязан этот компонент.
Возвращает
Cake\Controller\ControllergetPaginator() public
getPaginator(): Cake\Datasource\Paging\NumericPaginator
Получает экземпляр Paginator.
Возвращает
Cake\Datasource\Paging\NumericPaginatorimplementedEvents() public
implementedEvents(): array<string, mixed>
Поддерживаемые этим компонентом события.
Использует соглашения для сопоставления событий контроллера со стандартными именами методов обратного вызова компонента. Определение метода обратного вызова предполагает, что компонент заинтересован в соответствующем событии.
Переопределите этот метод, если вам необходимо добавить обработчики событий, не соответствующие соглашениям. Или если вы хотите, чтобы компоненты реагировали на нестандартные события.
Возвращает
array<string, mixed>initialize() public
initialize(array<string, mixed> $config): void
Метод инициализации.
Реализуйте этот метод, чтобы избежать необходимости переопределять конструктор и вызывать родительский.
Параметры
-
array<string, mixed>$config Настройки конфигурации, предоставленные этому компоненту.
Возвращает
voidlog() public
log(string $message, string|int $level = LogLevel::ERROR, array|string $context = []): bool
Удобный метод для записи сообщения в журнал. Для получения дополнительной информации о записи в журналы, обратитесь к Log::write().
Параметры
-
string$message Сообщение журнала.
-
string|int$level необязательно Уровень ошибки.
-
array|string$context необязательно Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
boolmergeOptions() public
mergeOptions(string $alias, array<string, mixed> $settings): array<string, mixed>
Объединяет различные параметры, которые использует Paginator. Собирает настройки из следующих источников:
- Общие настройки постраничности
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — агрегация всех объединённых наборов параметров. Вы можете изменить значение конфигурации allowedParameters, чтобы изменить параметры/значения, которые могут быть установлены с помощью параметров запроса.
Параметры
-
string$alias Псевдоним модели, которая постранично отображается. Если в общих настройках есть ключ с этим значением, настройки этого ключа будут использоваться для постраничности вместо общих.
-
array<string, mixed>$settings Настройки для объединения с данными запроса.
Возвращает
array<string, mixed>paginate() public
paginate(Cake\Datasource\RepositoryInterfaceCake\Datasource\QueryInterface $object, array<string, mixed> $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'],
]
]; Передача пустого массива как разрешенного списка полностью запрещает сортировку.
Постраничная навигация с пользовательскими находит
Вы можете выполнить постраничную навигацию с любым типом поиска, определенным для вашей таблицы, используя опцию 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<string, mixed>$settings optional Настройки/конфигурация, используемые для постраничной навигации.
Возвращает
Cake\Datasource\ResultSetInterfaceВыбрасывает
Cake\Http\Exception\NotFoundExceptionsetConfig() public
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
Продлевает настройку параметров конфигурации для Paginator.
Использование
Установка конкретного значения:
$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.
Возвращает
$thissetPaginator() public
setPaginator(Cake\Datasource\Paging\NumericPaginator $paginator): $this
Установить экземпляр paginator.
Параметры
-
Cake\Datasource\Paging\NumericPaginator$paginator Экземпляр Paginator.
Возвращает
$thisПодробное описание свойств
$_componentMap protected
Таблица поиска компонентов, используемая для ленивой загрузки объектов компонентов.
Тип
array<string, array>$_config protected
Конфигурация в ходе выполнения.
Тип
array<string, mixed>$_configInitialized protected
Была ли уже настроена конфигурация свойства с значениями по умолчанию.
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию.
Они объединяются с предоставленной пользователем конфигурацией при использовании компонента.
Тип
array<string, mixed>$_paginator protected
Экземпляр paginator источника данных.
Тип
Cake\Datasource\Paging\NumericPaginator$_registry protected
Класс реестра компонентов, используемый для ленивой загрузки компонентов.
Тип
Cake\Controller\ComponentRegistry$components 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.4/class-Cake.Controller.Component.PaginatorComponent.html