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