Класс PaginatorComponent
Этот компонент используется для обработки автоматической постраничной навигации данных модели. Основной способ использования этого компонента — вызов метода paginate(). Также существует удобная обёртка в контроллере.
Настройка постраничной навигации
Вы настраиваете постраничную навигацию при вызове paginate(). Смотрите этот метод для получения более подробной информации.
- Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\PaginatorComponent
Ссылка: https://book.cakephp.org/3.0/ru/controllers/components/pagination.html
Расположение: Controller/Component/PaginatorComponent.php
Резюме свойств
-
$_defaultConfigprotectedНастройки по умолчанию для постраничной навигации.array - Экземпляр постраничной навигации источника данных.
$_paginatorprotected
Унаследованные свойства
Резюме методов
- __call() publicПродлевает вызовы методов к Paginator.
- __construct() publicКонструктор
- _setPagingParams() protectedУстанавливает параметры постраничной навигации для экземпляра запроса.
- config() publicПродлевает получение/установку параметров конфигурации для Paginator.
- configShallow() publicПродлевает установку параметров конфигурации для Paginator.
- getConfig() publicПродлевает получение параметров конфигурации для Paginator.
- getPaginator() publicПолучить экземпляр постраничной навигации.
- implementedEvents() publicПоддерживаемые события этим компонентом.
- mergeOptions() public
Объединяет различные параметры, используемые Paginator. Сбор настроек из следующих мест:
- paginate() publicОбрабатывает автоматическую постраничную навигацию записей модели.
- setConfig() publicПродлевает установку параметров конфигурации для Paginator.
- setPaginator() publicУстановить экземпляр постраничной навигации.
Подробное описание методов
__call()source public
__call( string $method , array $args )
Продлевает вызовы методов к Paginator.
Параметры
- строка
$method - Имя метода.
- массив
$args - Аргументы метода.
Возвращает
смешанное__construct()source public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор
Параметры
-
Cake\Controller\ComponentRegistry$registry - A ComponentRegistry, который может использовать этот компонент для ленивой загрузки своих компонентов
- массив
$configoptional [] - Массив параметров конфигурации.
Переопределяет
Cake\Controller\Component::__construct() _setPagingParams()source protected
_setPagingParams( )
Устанавливает параметры постраничной навигации для экземпляра запроса.
config()source public
config( string|array|null $key null , mixed|null $value null , boolean $merge true )
Продлевает получение/установку параметров конфигурации для Paginator.
Устаревшее
3.5.0 используйте setConfig()/getConfig() вместо.Параметры
- строка|массив|null
$keyoptional null - Ключ для получения/установки или полный массив настроек.
- смешанное|null
$valueoptional null - Значение для установки.
- логическое
$mergeoptional true - Использовать рекурсивное объединение или перезапись существующей конфигурации, по умолчанию true.
Возвращает
смешанноеЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недействительный ключ.
Переопределяет
Cake\Core\InstanceConfigTrait::config() configShallow()source public
configShallow( string|array $key , mixed|null $value null )
Продлевает установку параметров конфигурации для Paginator.
Параметры
- строка|массив
$key - Ключ для установки или полный массив настроек.
- смешанное|null
$valueoptional null - Значение для установки.
Возвращает
$this
Переопределяет
Cake\Core\InstanceConfigTrait::configShallow() getConfig()source public
getConfig( string|null $key null , mixed $default null )
Продлевает получение параметров конфигурации для Paginator.
Параметры
- строка|null
$keyoptional null - Ключ для получения или null для всей конфигурации.
- смешанное
$defaultoptional null - Возвращаемое значение, когда ключ не существует.
Возвращает
смешанноеСчитываемое значение конфигурации.
Переопределяет
Cake\Core\InstanceConfigTrait::getConfig() getPaginator()source public
getPaginator( )
Получить экземпляр постраничной навигации.
Возвращает
Cake\Datasource\PaginatorimplementedEvents()source public
implementedEvents( )
Поддерживаемые события этим компонентом.
Возвращает
массивПереопределяет
Cake\Controller\Component::implementedEvents() mergeOptions()source public
mergeOptions( string $alias , array $settings )
Объединяет различные параметры, используемые Paginator. Сбор настроек из следующих мест:
- Общие настройки постраничной навигации
- Настройки, специфичные для модели.
- Параметры запроса
Результат этого метода — совокупность всех объединённых наборов параметров. Вы можете изменить значение конфигурации whitelist для изменения параметров/значений, которые можно задать с помощью параметров запроса.
Параметры
- строка
$alias Псевдоним модели, постраничная навигация по которой выполняется, если в общих настройках есть ключ с этим значением, настройки этого ключа будут использоваться для постраничной навигации вместо общих.
- массив
$settings - Настройки, которые будут объединены с данными запроса.
Возвращает
массивМассив объединённых параметров.
paginate()source public
paginate( Cake\Datasource\RepositoryInterface|Cake\Datasource\QueryInterface $object , array $settings [] )
Обрабатывает автоматическую постраничную навигацию записей модели.
Настройка постраничной навигации
При вызове 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',
'sortWhitelist' => ['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\RepositoryInterface|Cake\Datasource\QueryInterface$object - Таблица или запрос для постраничной навигации.
- массив
$settingsнеобязательно [] - Настройки/конфигурация, используемые для постраничной навигации.
Возвращает
Cake\Datasource\ResultSetInterfaceРезультаты запроса
Возбуждает
Cake\Network\Exception\NotFoundExceptionsetConfig()source public
setConfig( string|array $key , mixed|null $value null , boolean $merge true )
Замена настроек конфигурации в Paginator.
Параметры
- строка|массив
$key - Ключ для установки или полный массив настроек.
- смешанный|null
$valueнеобязательно null - Значение для установки.
- булево
$mergeнеобязательно true - Рекурсивное слияние или перезапись существующей конфигурации, по умолчанию — true.
Возвращает
$this
Возбуждает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Переопределяет
Cake\Core\InstanceConfigTrait::setConfig() setPaginator()source public
setPaginator( Cake\Datasource\Paginator $paginator )
Установить экземпляр постраничной навигации.
Параметры
-
Cake\Datasource\Paginator$paginator - Экземпляр постраничной навигации.
Возвращает
Cake\Controller\Component\PaginatorComponentМетоды, унаследованные от Cake\Controller\Component
__debugInfo()source public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
массив__get()source public
__get( string $name )
Магический метод для леничной загрузки $components.
Параметры
- строка
$name - Имя компонента для получения.
Возвращает
смешанныйОбъект компонента или null.
getController()source public
getController( )
Получить контроллер, к которому привязан этот компонент.
Возвращает
Cake\Controller\ControllerПривязанный контроллер.
initialize()source public
initialize( array $config )
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родительский.
Параметры
- массив
$config - Настройки конфигурации, предоставленные этому компоненту.
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- строка
$key - Ключ для удаления.
Возбуждает
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
_configRead()source protected
_configRead( string|null $key )
Считывает ключ конфигурации.
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
смешанный_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записывает ключ конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию — false.
Возбуждает
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
Методы, используемые из Cake\Log\LogTrait
log()source public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Удобный метод для записи сообщения в журнал. См. Log::write() для получения дополнительной информации о записи в журналы.
Параметры
- смешанный
$msg - Сообщение журнала.
- целое число|строка
$levelнеобязательно LogLevel::ERROR - Уровень ошибки.
- строка|массив
$contextнеобязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
булевоУспешность записи в журнал.
Подробное описание свойств
$_defaultConfigsource
protected массив
Настройки постраничной навигации по умолчанию.
При вызове paginate() эти настройки будут объединены с предоставленной вами конфигурацией.
-
maxLimit- Максимальное количество элементов, которые могут выбрать пользователи для просмотра. По умолчанию 100 -
limit- Начальное количество элементов на страницу. По умолчанию 20. -
page- Номер начальной страницы, по умолчанию 1. -
whitelist- Список параметров, которые пользователи могут задавать с помощью параметров запроса. Изменение этого списка позволит пользователям иметь большее влияние на постраничную навигацию, будьте осторожны с тем, что вы разрешаете.
[
'page' => 1,
'limit' => 20,
'maxLimit' => 100,
'whitelist' => ['limit', 'sort', 'page', 'direction']
] $_paginatorsource
protected Cake\Datasource\Paginator
Экземпляр постраничной навигации источника данных.
© 2005–2018 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/3.5/class-Cake.Controller.Component.PaginatorComponent.html