Spec-Zone.ru › CakePHP 4.2

Компонент PaginatorComponent

Этот компонент используется для обработки автоматической постраничной навигации данных модели. Основной способ использования этого компонента — вызов метода paginate(). Также существует удобная обёртка для контроллера.

Настройка постраничной навигации

Настройка постраничной навигации выполняется при вызове paginate(). Более подробную информацию см. в документации к этому методу.

Пространство имён: Cake\Controller\Component
Ссылка: 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.

END_OF_DOCUMENT_MARKER

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

__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

Устанавливает параметры постраничности для экземпляра запроса.

Возвращает

void

configShallow() 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 необязательно

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

Возвращает

$this

getConfig() 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 необязательно

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

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

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

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

Параметры

string $key

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

Возвращает

mixed

Исключения

InvalidArgumentException

getController() public

getController(): Cake\Controller\Controller

Получает контроллер, к которому привязан этот компонент.

Возвращает

Cake\Controller\Controller

getPaginator() public

getPaginator(): Cake\Datasource\Paginator

Получает экземпляр Paginator.

Возвращает

Cake\Datasource\Paginator

implementedEvents() public

implementedEvents(): array

Поддерживаемые этим компонентом события.

Использует соглашения для сопоставления событий контроллера со стандартными именами методов обратного вызова компонента. Определение метода обратного вызова предполагает, что компонент заинтересован в соответствующем событии.

Переопределите этот метод, если вам необходимо добавить обработчики событий, не соответствующие соглашениям. Или если вы хотите, чтобы компоненты реагировали на нестандартные события.

Возвращает

array

initialize() public

initialize(array $config): void

Метод инициализации.

Реализуйте этот метод, чтобы избежать необходимости переопределять конструктор и вызывать родительский.

Параметры

array $config

Настройки конфигурации, предоставленные этому компоненту.

Возвращает

void

log() public

log(string $message, int|string $level = LogLevel::ERROR, string|array $context = []): bool

Удобный метод для записи сообщения в журнал. Для получения дополнительной информации о записи в журналы, обратитесь к Log::write().

Параметры

string $message

Сообщение журнала.

int|string $level необязательно

Уровень ошибки.

string|array $context необязательно

Дополнительные данные журнала, относящиеся к этому сообщению.

Возвращает

bool

mergeOptions() public

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

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

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

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

Параметры

string $alias

Псевдоним модели, которая постранично отображается. Если в общих настройках есть ключ с этим значением, настройки этого ключа будут использоваться для постраничности вместо общих.

array $settings

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

Возвращает

array

paginate() 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\NotFoundException

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

Возвращает

$this

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

Spec-Zone.ru

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